用api圆弧,用vb画圆弧

duanyl821004 2003-04-27 07:55:34
有谁知道?怎末画.两种方法,1,api.2,用vb自身的功能。
...全文
285 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sean918 2003-04-28
  • 打赏
  • 举报
回复
比较楼上2个例子,可以知道, ArcTo 函数会将当前画笔位置置为弧的终点,而 Arc 函数则不会
Sean918 2003-04-28
  • 打赏
  • 举报
回复
Const AD_CLOCKWISE = 2
Const AD_COUNTERCLOCKWISE = 1
Private Declare Function ArcTo Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
Private Declare Function SetArcDirection Lib "gdi32" (ByVal hdc As Long, ByVal ArcDirection As Long) As Long
Private Declare Function GetArcDirection Lib "gdi32" (ByVal hdc As Long) As Long
Private Sub Form_Paint()
If GetArcDirection(Me.hdc) = AD_CLOCKWISE Then
SetArcDirection Me.hdc, AD_COUNTERCLOCKWISE
End If
ArcTo Me.hdc, 20, 20, 50, 60, 50, 60, 20, 60
End Sub
Sean918 2003-04-28
  • 打赏
  • 举报
回复
唉... 5星出现在偶楼上了

偶就补充一下用 API 画的圆弧吧
===========================
Private Declare Function Arc Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
Private Sub Form_Load()
'Set graphical mode to persistent
Me.AutoRedraw = True
'Draw to arcs
Arc Me.hdc, 0, 0, 100, 100, 100, 50, 50, 100
Arc Me.hdc, 49, 49, 149, 149, 49, 99, 99, 49
End Sub

TechnoFantasy 2003-04-27
  • 打赏
  • 举报
回复
刚才用vb函数画的是圆,下面的画圆弧:
Dim CX, CY, Radius, Limit ' Declare variable.
ScaleMode = 3 ' Set scale to pixels.
CX = ScaleWidth / 2 ' Set X position.
CY = ScaleHeight / 2 ' Set Y position.
If CX > CY Then Limit = CY Else Limit = CX
For Radius = 0 To Limit ' Set radius.
Circle (CX, CY), Radius, RGB(Rnd * 255, Rnd * 255, Rnd * 255), 0, 2
Next Radius
TechnoFantasy 2003-04-27
  • 打赏
  • 举报
回复
Option Explicit

Private Declare Function Arc Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long

Private Sub Command1_Click()
Arc Picture1.hdc, 0, 0, 80, 80, 0, 50, 70, 70

Dim CX, CY, Radius, Limit ' Declare variable.
ScaleMode = 3 ' Set scale to pixels.
CX = ScaleWidth / 2 ' Set X position.
CY = ScaleHeight / 2 ' Set Y position.
If CX > CY Then Limit = CY Else Limit = CX
For Radius = 0 To Limit ' Set radius.
Circle (CX, CY), Radius, RGB(Rnd * 255, Rnd * 255, Rnd * 255)
Next Radius
End Sub

1,485

社区成员

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

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