绘制线条的两种方法

绘制线条的两种方法

下面每个示例都在位置 (20, 10) 和位置 (200, 100) 之间绘制了一条宽为 3 的红色线条。第一个示例调用 GDI,第二个示例通过托管类接口调用 GDI+。

使用 GDI 绘制线条

要使用GDI 绘制线条,需要两个对象:设备上下文和钢笔。通过调用 BeginPaint,可以获得设备上下文句柄;通过调用CreatePen,则可以获得钢笔句柄。下一步,调用 SelectObject 以将钢笔选入设备上下文。调用 MoveToEx,将钢笔位置设在 (20, 10),然后调用 LineTo,在钢笔位置与位置 (200, 100) 之间绘制一条线条。请注意,MoveToExLineTo 均将 hdc(设备上下文的句柄)作为参数接收。

HDC          hdc;
PAINTSTRUCT  ps;
HPEN         hPen;
...
hdc = BeginPaint(hWnd, &ps);
   hPen = CreatePen(PS_SOLID, 3, RGB(255, 0, 0));
   SelectObject(hdc, hPen);
   MoveToEx(hdc, 20, 10, NULL);
   LineTo(hdc, 200, 100);
EndPaint(hWnd, &ps);

使用 GDI+ 和托管类接口绘制线条

用GDI+的C++类接口来画线,你需要一个Graphics 对象和一个Pen 对象。你不要去获得这些对象的句柄。你去创建一个Graphics 对象和一个Pen 对象。调用Graphics 对象的Graphics::DrawLine 方法。Graphics::DrawLine 方法的第一个参数,就是指向你的Pen 对象的指针。

HDC          hdc;
PAINTSTRUCT  ps;
Pen*         myPen;
Graphics*    myGraphics;
hdc = BeginPaint(hWnd, &ps);
   myPen = new Pen(Color(255, 255, 0, 0), 3);
   myGraphics = new Graphics(hdc);
   myGraphics->DrawLine(myPen, 20, 10, 200, 100);
   delete myGraphics;
   delete myPen;
EndPaint(hWnd, &ps);

 

作为参数的钢笔、画笔、路径、图像和字体

前面的示例显示:创建和维护Pen 对象可以与提供绘制方法的 Graphics 对象分开。创建和维护 BrushGraphicsPathImage Font 对象也可以与 Graphics 对象分开。Graphics 类提供的许多绘制方法都将 BrushGraphicsPathImage Font 对象作为参数接收。例如,Brush 对象作为参数传递至 FillRectangle 方法,GraphicsPath 对象作为参数传递至 DrawPath 方法。同样,ImageFont 对象传递至 DrawImageDrawString 方法。这与GDI 不同,在 GDI 中,需要将画笔、路径、图像或字体选入设备上下文,然后将设备上下文的句柄作为参数传递至绘制函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值