谢谢各位在百忙之中,能来帮我一下,不胜感激。 是这样的,下面的代码只需两个元件:一个按钮(command1);一个图片框(picture1) 在内存中创建的绘图区域其坐标默认的是:左上角(0,0) 右下角(L,H)。请问这个坐标如何才能自己定义呢? 再次感谢!!分不多了,70分发了两次,每个帖子35。各位高手不要嫌少啊。。
Option ExplicitDim lngX As Double 'X的值
Dim L As Long '绘图区域的宽
Dim H As Long '绘图区域的高
Dim lngMemoryDC As Long '内存中绘图的设备场景的句柄
Dim lngBMPHandle As Long '位图的句柄
Dim lngBrushHandle As Long '填充刷子的句柄
Dim hRgn, jilu As Long '填充区域的句柄Private Const SRCCOPY = &HCC0020Private Type POINTAPI
X As Long
Y As Long
End TypePrivate Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Declare Function Polyline Lib "gdi32 " (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function FillRgn Lib "gdi32" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As LongPrivate Sub Command1_Click()
Dim lngP, lngp1 As Long
Dim PTS(6) As POINTAPI
PTS(0).X = 10: PTS(0).Y = 10
PTS(1).X = 100: PTS(1).Y = 10
PTS(2).X = 100: PTS(2).Y = 200
PTS(3).X = 200: PTS(3).Y = 200
PTS(4).X = 200: PTS(4).Y = 10
PTS(5).X = 300: PTS(5).Y = 10
Dim hPen As Long
hPen = CreatePen(0, 3, RGB(255, 0, 0))
SelectObject lngMemoryDC, hPen
lngP = Polyline(lngMemoryDC, PTS(0), 6)
BitBlt Picture1.hdc, 0, 0, L, H, lngMemoryDC, 0, 0, SRCCOPY
End SubPrivate Sub Form_Load() Dim lngP As Long
L = Picture1.ScaleWidth / 15
H = Picture1.ScaleHeight / 15
lngMemoryDC = CreateCompatibleDC(Picture1.hdc) '创建一个与窗体相兼容的设备场景
lngBMPHandle = CreateCompatibleBitmap(Picture1.hdc, L, H) '在内存中创建与窗体同样大小的位图
SelectObject lngMemoryDC, lngBMPHandle '将位图选入刚才创建的设备场景中
hRgn = CreateRectRgn(0, 0, L, H) '创建一个与窗体同样大小的矩形区域
lngBrushHandle = CreateSolidBrush(RGB(255, 255, 255)) '用白色创建一个实色画刷
lngP = FillRgn(lngMemoryDC, hRgn, lngBrushHandle) '用创建的画刷对该区域进行填充
End Sub
Option ExplicitDim lngX As Double 'X的值
Dim L As Long '绘图区域的宽
Dim H As Long '绘图区域的高
Dim lngMemoryDC As Long '内存中绘图的设备场景的句柄
Dim lngBMPHandle As Long '位图的句柄
Dim lngBrushHandle As Long '填充刷子的句柄
Dim hRgn, jilu As Long '填充区域的句柄Private Const SRCCOPY = &HCC0020Private Type POINTAPI
X As Long
Y As Long
End TypePrivate Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Declare Function Polyline Lib "gdi32 " (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function FillRgn Lib "gdi32" (ByVal hdc As Long, ByVal hRgn As Long, ByVal hBrush As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As LongPrivate Sub Command1_Click()
Dim lngP, lngp1 As Long
Dim PTS(6) As POINTAPI
PTS(0).X = 10: PTS(0).Y = 10
PTS(1).X = 100: PTS(1).Y = 10
PTS(2).X = 100: PTS(2).Y = 200
PTS(3).X = 200: PTS(3).Y = 200
PTS(4).X = 200: PTS(4).Y = 10
PTS(5).X = 300: PTS(5).Y = 10
Dim hPen As Long
hPen = CreatePen(0, 3, RGB(255, 0, 0))
SelectObject lngMemoryDC, hPen
lngP = Polyline(lngMemoryDC, PTS(0), 6)
BitBlt Picture1.hdc, 0, 0, L, H, lngMemoryDC, 0, 0, SRCCOPY
End SubPrivate Sub Form_Load() Dim lngP As Long
L = Picture1.ScaleWidth / 15
H = Picture1.ScaleHeight / 15
lngMemoryDC = CreateCompatibleDC(Picture1.hdc) '创建一个与窗体相兼容的设备场景
lngBMPHandle = CreateCompatibleBitmap(Picture1.hdc, L, H) '在内存中创建与窗体同样大小的位图
SelectObject lngMemoryDC, lngBMPHandle '将位图选入刚才创建的设备场景中
hRgn = CreateRectRgn(0, 0, L, H) '创建一个与窗体同样大小的矩形区域
lngBrushHandle = CreateSolidBrush(RGB(255, 255, 255)) '用白色创建一个实色画刷
lngP = FillRgn(lngMemoryDC, hRgn, lngBrushHandle) '用创建的画刷对该区域进行填充
End Sub
解决方案 »
- 如何获得当前登录QQ的句柄和QQ号,有可能方法的都不放过
- 大牛!出来晒太阳!
- 帮偶看看如何调整这个控件的位置及大小
- 数据接收显示问题 高手指点指点
- 有关Nothing
- 我用ADO方法将一条记录加入表中,出现了编译错误。请各位帮忙!多谢!!附代码。
- windows2000下从"at"命令启动一应用程序,调用com+组件出现“意外错误:拒绝的权限”!??
- RecordSet 声明后,是否一定要释放?一头雾水!
- 一个打印的问题,困扰我好长时间了,各位帮帮忙吧,如何实现多页打印??问题解决了,高分相送,万分感激!
- 请问在编程中使用的变量可否看做是一内存存储地址的映射?
- 修改注册表的问题
- 求vb读写raw文件的方法,谢谢各位
Dim i As Long
Dim cx As Double
Dim cy As Double
Dim lx As Double
Dim ly As Double
Picture1.DrawWidth = 2
Picture1.Scale (0, 5)-(10, -5)
Picture1.Line (0, 0)-(10, 0)
For i = 0 To 100
cx = i / 10
cy = Sin(i / 10) * 5
Picture1.Line (lx, ly)-(cx, cy)
lx = cx
ly = cy
Next
End Sub
还不如你改变一下自己的算法, 转换到系统的坐标系来的更方便.
这个就是自定义坐标系的~~,不应该算是函数,随便,上面定义出来的是左上角是(-10,10),右下角是(10,-10)的坐标系。