只用API,画多边形并指定线条色,填充色,填充样式,如何做?

town 2001-10-24 05:21:58
只用API,画多边形并指定线条色,填充色,填充样式,如何做?
...全文
212 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
town 2001-10-24
  • 打赏
  • 举报
回复
谢谢!就是要SelectObject和DeleteObject,搞不懂Windows为啥子要这采取这种模式。
xuqiang007 2001-10-24
  • 打赏
  • 举报
回复
以上问题需要以下几个API函数(可以从API VIEW里看到):
Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long'将绘图的对象选入DC中
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long'将绘图对象从DC中删除
Public Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long'创建一个刷子的绘图对象
Public Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long'创建一个画笔的绘图对象
Public Declare Function Ellipse Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long'画椭圆
Public Declare Function Polygon Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long'画多边形
'需要定义的数据类型
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

以下是在窗体上绘图的例子:
Private Sub Form_Load()
Me.AutoRedraw=True
dim hNewPen,hNewBrush as long
hNewPen = CreatePen(0, 1, RGB(255, 0, 0))'创建一个画笔:线型为实线,宽度为1,颜色为红
hNewBrush= CreateSolidBrush(RGB(0, 0, 255))'创建一个刷子:颜色为蓝
SelectObject Me.hdc, hNewPen'装入画笔
SelectObject Me.hdc, hNewBrush'装入刷子
Ellipse Me.hdc,0,0,150,100'用装入的刷子和画笔绘制一个边框为红填充为蓝的椭圆
Dim n As Integer
n=5'假定多边形的顶点数为5
Dim pPoly() as POINTAPI'创建用来存储多边形顶点坐标的数据结构数组
Redim pPoly(n-1)
pPoly(0).x = 200: pPoly(0).y = 0'定义每一个顶点的坐标
pPoly(1).x = 300: pPoly(1).y = 0
pPoly(2).x = 320: pPoly(2).y = 50
pPoly(3).x = 250: pPoly(3).y = 100
pPoly(4).x = 180: pPoly(4).y = 50
Polygon Me.hdc, pPoly(0), n'绘制多边形(红框蓝底)
DeleteObject hNewPen
DeleteObject hNewBrush'一定要删除创建的画笔和刷子
End Sub



town 2001-10-24
  • 打赏
  • 举报
回复
对了,还要椭圆。

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧