45、wxWidgets绘画之形状

这篇博客展示了如何利用wxWidgets库在C++中实现图形绘制,包括绘制黄色点、不同样式的线条、椭圆、带圆角的矩形、弧线、多边形、样条曲线以及文字。代码示例详细解释了各种图形元素的绘制方法和参数设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 


#include <wx/wx.h>

class Simple:public wxFrame
{
public:
    Simple(const wxString& title);
protected:
    void OnPaint(wxPaintEvent& event);

};


Simple::Simple(const wxString& title)
    :wxFrame(NULL,-1,title,wxPoint(-1,-1),wxSize(680,580))
{
    wxClientDC dc(this);
    dc.SetPen(wxPen(*wxYELLOW, 1));//wxPen(*wxYELLOW, 1)定义一个画笔,颜色为黄色,画笔宽度为1
    dc.DrawPoint(wxPoint(20,120));//在鼠标的位置绘制一个点
    dc.SetPen(wxNullPen);//清除画笔

    Bind(wxEVT_PAINT,wxPaintEventHandler(Simple::OnPaint),this);
    Centre();
}

void Simple::OnPaint(wxPaintEvent& event)
{
    wxPaintDC dc(this);


    wxPoint lines[]={
        wxPoint(20,260),wxPoint(100,260),
        wxPoint(20,210),wxPoint(100,210)
    };
    wxPoint polygon []={
        wxPoint(130,140),wxPoint(180,170)
        ,wxPoint(180,140),wxPoint(220,110),wxPoint(140,100)
    };
    wxPoint splines[] ={
        wxPoint(240,170),wxPoint(280,170)
        ,wxPoint(285,110),wxPoint(325,110)
    };


    dc.SetPen(wxPen(wxTheColourDatabase->Find("MAGENTA"),5,wxSOLID));//solid
    dc.SetBrush(wxTheColourDatabase->Find("LIME GREEN"));
    dc.DrawEllipse(20,20,90,60);

    dc.SetPen(wxPen(*wxCYAN,5,wxDOT));//dot
    dc.SetBrush(wxTheColourDatabase->Find("AQUAMARINE"));
    dc.DrawRoundedRectangle(wxPoint(130,15),wxSize(90,60),10);

    dc.SetPen(wxPen(*wxBLUE,3,wxLONG_DASH));//long dash
    dc.SetBrush(wxTheColourDatabase->Find("WHEAT"));
    dc.DrawArc(240,40,340,40,290,20);

    dc.SetPen(*wxWHITE);
    dc.SetBrush(wxTheColourDatabase->Find("MAROON"));
    dc.DrawEllipticArc(20,120,100,100,20,160);

    dc.SetPen(wxPen(*wxWHITE,4,wxSOLID));
    dc.SetBrush(wxTheColourDatabase->Find("CORAL"));
    dc.DrawPolygon(4,polygon);

    dc.SetPen(wxTheColourDatabase->Find("PINK"));
    dc.DrawSpline(4,splines);

    dc.SetPen(wxPen(wxTheColourDatabase->Find("FIREBRICK"),5,wxDOT_DASH));
    dc.DrawLines(4,lines);
//    dc.DrawEllipse(wxPoint(130,105),wxSize(90,60));

    dc.SetPen(wxPen(wxTheColourDatabase->Find("NAVY"),5,wxSOLID));
    dc.SetBrush(wxTheColourDatabase->Find("GOLD"));//,wxTRANSPARENT));
    dc.DrawCircle(170,230,30);

    dc.DrawRotatedText("wxWidgets",240,260,30);


}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值