首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

!VB中picturebox控件用API画图的坐标有关问题

2012-04-09 
求助!VB中picturebox控件用API画图的坐标问题!我曾用picturebox的line函数画图,想提高运行速度,现在想用AP

求助!VB中picturebox控件用API画图的坐标问题!
我曾用picturebox的line函数画图,想提高运行速度,现在想用API。VB默认的单位是缇,坐标原点在左上角,X正方向向右为255个单位,Y的正方向向下为100单位。而API中默认的是像素,想请教各位高手,我应该用API怎样编写,能达到和以前同样的效果?谢谢各位!

[解决办法]
1像素=15缇
[解决办法]

VB code
Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As LongPrivate Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As LongPrivate Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As LongPrivate Const PS_SOLID = 0Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As Long) As LongPrivate Sub Command1_Click()Picture1.AutoRedraw = TruePicture1.Scale (0, 0)-(255, 100)Picture1.Line (20, 20)-(80, 80), vbRedEnd SubPrivate Sub Command2_Click()Dim ret As LongDim re As LongDim re1 As LongPicture1.ScaleMode = 3Picture1.Scale (0, 0)-(255, 100)Picture1.AutoRedraw = TrueX1 = Int(20 * Picture1.Width / 255 / Screen.TwipsPerPixelX)Y1 = Int(20 * Picture1.Height / 100 / Screen.TwipsPerPixelY)X2 = Int(80 * Picture1.Width / 255 / Screen.TwipsPerPixelX)Y2 = Int(80 * Picture1.Height / 100 / Screen.TwipsPerPixelY)Debug.Print X1 & "/" & Y1 & "/"; X2 & "/" & Y2re1 = MoveToEx(Picture1.hdc, X1, Y1, 0&)ret = CreatePen(PS_SOLID, 2, &HFFFFFF)re = LineTo(Picture1.hdc, X2, Y2)DeleteObject retEnd Sub 

热点排行