谢谢各位提供的帮助,我是做工控的,所以在编程方面差劲的很,或者干脆说不懂。。
问题是这样的,我想用polyline这个函数绘制一段折线,折线上各个坐标点是用小数表示的。可是我弄得下面的这段程序只能描绘所有坐标点的整数部分,如何改正一下才能描绘出小数坐标点呢?
只有三个元件:一个按钮(Command1),两个文本框(text1、text2)。Private Type POINTAPI
X As Long
Y As Long
End Type
Private Declare Function Polyline Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
Dim PTS(0 To 6) As POINTAPIPrivate Sub Command1_Click()
PTS(0).X = 10.123
PTS(0).Y = 10.456PTS(1).X = 100.325
PTS(1).Y = 10.235PTS(2).X = 100.2645
PTS(2).Y = 200.214PTS(3).X = 200.15
PTS(3).Y = 200.254PTS(4).X = 200.264
PTS(4).Y = 10.24PTS(5).X = 300.15
PTS(5).Y = 10.48Text1.Text = PTS(0).X
Text2.Text = PTS(1).X
Polyline Me.hdc, PTS(0), 6
End Sub
问题是这样的,我想用polyline这个函数绘制一段折线,折线上各个坐标点是用小数表示的。可是我弄得下面的这段程序只能描绘所有坐标点的整数部分,如何改正一下才能描绘出小数坐标点呢?
只有三个元件:一个按钮(Command1),两个文本框(text1、text2)。Private Type POINTAPI
X As Long
Y As Long
End Type
Private Declare Function Polyline Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
Dim PTS(0 To 6) As POINTAPIPrivate Sub Command1_Click()
PTS(0).X = 10.123
PTS(0).Y = 10.456PTS(1).X = 100.325
PTS(1).Y = 10.235PTS(2).X = 100.2645
PTS(2).Y = 200.214PTS(3).X = 200.15
PTS(3).Y = 200.254PTS(4).X = 200.264
PTS(4).Y = 10.24PTS(5).X = 300.15
PTS(5).Y = 10.48Text1.Text = PTS(0).X
Text2.Text = PTS(1).X
Polyline Me.hdc, PTS(0), 6
End Sub
解决方案 »
- activereport导出的PDF文件是乱码,怎么解决?
- VB中如何不用遍历的方法取得sqlite数据库的值?
- 请问那个API可以画粗点线
- 哪位大侠告诉我ClearText方法是干嘛的吗??
- 作过握奇CPU卡应用开发 上位机开发的朋友 进来看看
- 在FRAME中加了控件后,想删除FRAME,但保存FRAME上的控件不变,有什么方法?
- 请问: 如何用VB控制"别的"软件,让它始终在最前端
- 怎么我打包好的exe在别的机器上运行提示datagrid没有注册?
- 那位仁兄有能够实现如netmeeting语音聊天的控件或代码,发我!谢谢
- 如果判断文本是字母还是汉字?
- vb代码多次对rs读取是否会影响速度?应该如何处理?
- 在做工具栏的时候,怎么使不可用的按钮变灰啊?
这个问题是API中关于改变画笔颜色的问题。画笔画出线条的宽度可以改变,为什么颜色不变呢,总是黑的救救我吧,如果你是为了赚分的话,我可以给家的,救我要紧啊!!
hPen = CreatePen(0, 3, RGB(255, 0, 0))‘画笔宽度可以通过里面的3改变
SelectObject lngMemoryDC, hPen
lngP = Polyline(lngMemoryDC, PTS(0), 6)源程序如下:
只有两个元件:一个按钮(Command1),一个图片框(Picture1).
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 DC_L = 500 '内存设备场景对图片设备场景的倍数,注意,这个数据太大会导致函数执行失败
Private Const SRCCOPY = &HCC0020Private Type POINTAPI
X As Long
Y As Long
End Type
Private 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)
Dim PTS1(6) As POINTAPI
PTS1(0).X = 10: PTS1(0).Y = 50
PTS1(1).X = 80: PTS1(1).Y = 50
PTS1(2).X = 80: PTS1(2).Y = 250
PTS1(3).X = 220: PTS1(3).Y = 250
PTS1(4).X = 220: PTS1(4).Y = 50
PTS1(5).X = 300: PTS1(5).Y = 50
Dim hPen1 As Long
hPen1 = CreatePen(0, 1, RGB(0, 255, 0))
SelectObject lngMemoryDC, hPen1
lngp1 = Polyline(lngMemoryDC, PTS1(0), 6)
lngP = BitBlt(Picture1.hdc, 0, 0, L, H, lngMemoryDC, 0, 0, SRCCOPY)
lngp1 = 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(lngMemoryDC, DC_L * L, H) '在内存中创建与窗体同样大小的位图
SelectObject lngMemoryDC, lngBMPHandle '将位图选入刚才创建的设备场景中
lngBrushHandle = CreateSolidBrush(RGB(255, 255, 255)) '用白色创建一个实色画刷
hRgn = CreateRectRgn(0, 0, DC_L * L, H) '创建一个与窗体同样大小的矩形区域
lngP = FillRgn(lngMemoryDC, hRgn, lngBrushHandle) '用创建的画刷对该区域进行填充
End Sub