VB API 用 Polyline 画线怎样改变颜色
答案:2 悬赏:80 手机版
解决时间 2021-04-06 10:52
- 提问者网友:精神病院里
- 2021-04-05 13:30
VB API 用 Polyline 画线怎样改变 线条的 颜色用 CreatePen ?
最佳答案
- 五星知识达人网友:神鬼未生
- 2021-04-05 14:17
很简单啊,两种方法:
一、能支持画图的控件都有前景色的设置,更改前景色就可以了,方便安全:ForeColor属性
二、如果想用api的话,需要如下步骤:
1、建立画笔
Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
说明:
用指定的样式、宽度和颜色创建一个画笔
返回值:
Long,如函数执行成功,就返回指向新画笔的一个句柄;否则返回零
参数表:
参数 类型及说明
nPenStyle Long,指定画笔样式,可以是下述常数之一
PS_SOLID 画笔画出的是实线
PS_DASH 画笔画出的是虚线(nWidth必须是1)
PS_DOT 画笔画出的是点线(nWidth必须是1)
PS_DASHDOT 画笔画出的是点划线(nWidth必须是1)
PS_DASHDOTDOT 画笔画出的是点-点-划线(nWidth必须是1)
PS_NULL 画笔不能画图
PS_INSIDEFRAME 画笔在由椭圆、矩形、圆角矩形、饼图以及弦等生成的封闭对象框中画图。如指定的准确RGB颜色不存在,就进行抖动处理
nWidth Long,以逻辑单位表示的画笔的宽度
crColor Long,画笔的RGB颜色
注解
一旦不再需要画笔,记得用DeleteObject函数将其删除
2、关联画笔
Declare Function SelectObject Lib "gdi32" Alias "SelectObject" (ByVal hdc As Long, ByVal hObject As Long) As Long
说明:为设备场景指定画笔,也可以是刷子等,这里用画笔
参数表
参数 类型及说明
hdc Long,一个设备场景的句柄
hObject Long,一个画笔、位图、刷子、字体或区域的句柄
3、作图
省略
4、删除画笔
Declare Function DeleteObject Lib "gdi32" Alias "DeleteObject" (ByVal hObject As Long) As Long
不用的画笔一定要删除
总的来说不如直接更改ForeColor来的方便。但适用范围广,比如在不是本程序的地方也可以画图。
例句:
声明:
Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long '删除画笔
Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long '为设备场景指定画笔等
Declare Function Polyline Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long '画线
Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long '创建画笔
Type POINTAPI
x As Long
y As Long
End Type
代码:
Dim dian(5) As POINTAPI, bi As Long
'Me.ForeColor = RGB(255, 255, 0)'用第一种方法,只用一句代码即可
bi = CreatePen(0, 1, RGB(255, 0, 255))
SelectObject Me.hdc, bi
Print bi
dian(0).x = 0
dian(0).y = 0
dian(1).x = 100: dian(1).y = 120
dian(2).x = 50: dian(2).y = 30
'.......此处省略
Polyline Me.hdc, dian(0),6
DeleteObject bi
一、能支持画图的控件都有前景色的设置,更改前景色就可以了,方便安全:ForeColor属性
二、如果想用api的话,需要如下步骤:
1、建立画笔
Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
说明:
用指定的样式、宽度和颜色创建一个画笔
返回值:
Long,如函数执行成功,就返回指向新画笔的一个句柄;否则返回零
参数表:
参数 类型及说明
nPenStyle Long,指定画笔样式,可以是下述常数之一
PS_SOLID 画笔画出的是实线
PS_DASH 画笔画出的是虚线(nWidth必须是1)
PS_DOT 画笔画出的是点线(nWidth必须是1)
PS_DASHDOT 画笔画出的是点划线(nWidth必须是1)
PS_DASHDOTDOT 画笔画出的是点-点-划线(nWidth必须是1)
PS_NULL 画笔不能画图
PS_INSIDEFRAME 画笔在由椭圆、矩形、圆角矩形、饼图以及弦等生成的封闭对象框中画图。如指定的准确RGB颜色不存在,就进行抖动处理
nWidth Long,以逻辑单位表示的画笔的宽度
crColor Long,画笔的RGB颜色
注解
一旦不再需要画笔,记得用DeleteObject函数将其删除
2、关联画笔
Declare Function SelectObject Lib "gdi32" Alias "SelectObject" (ByVal hdc As Long, ByVal hObject As Long) As Long
说明:为设备场景指定画笔,也可以是刷子等,这里用画笔
参数表
参数 类型及说明
hdc Long,一个设备场景的句柄
hObject Long,一个画笔、位图、刷子、字体或区域的句柄
3、作图
省略
4、删除画笔
Declare Function DeleteObject Lib "gdi32" Alias "DeleteObject" (ByVal hObject As Long) As Long
不用的画笔一定要删除
总的来说不如直接更改ForeColor来的方便。但适用范围广,比如在不是本程序的地方也可以画图。
例句:
声明:
Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long '删除画笔
Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long '为设备场景指定画笔等
Declare Function Polyline Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long '画线
Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long '创建画笔
Type POINTAPI
x As Long
y As Long
End Type
代码:
Dim dian(5) As POINTAPI, bi As Long
'Me.ForeColor = RGB(255, 255, 0)'用第一种方法,只用一句代码即可
bi = CreatePen(0, 1, RGB(255, 0, 255))
SelectObject Me.hdc, bi
Print bi
dian(0).x = 0
dian(0).y = 0
dian(1).x = 100: dian(1).y = 120
dian(2).x = 50: dian(2).y = 30
'.......此处省略
Polyline Me.hdc, dian(0),6
DeleteObject bi
全部回答
- 1楼网友:荒野風
- 2021-04-05 14:56
虽然我很聪明,但这么说真的难到我了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯