VB画弧的问题(求救)!!!

gzycy 2004-08-09 06:54:34
已知圆上三个点以及圆心的坐标,用这三点来画弧,以第一点为弧的起点,第三点为弧的终点,请各位高手这该怎么画?
...全文
317 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
helanshan 2004-08-09
  • 打赏
  • 举报
回复
设:圆心为:(X1,Y1)
第一点为:(X2,X2)
第二点为:(X3,Y3)
pi=3.14159265
起始弧度为:tan(atn((y2-y1)/(x2-x1)*pi/180))
终止弧度为:tan(atn((y3-y1)/(x3-x1)*pi/180))
两点间的距离公式为s=sqrt(sqr(X1-X2)+sqr(Y1-X2)),求出半径。
用Circle方法画弧。。前提是:已知圆心到两点的距离应该相等,不然没法画。。
把以上写成代码就可以了。。也可以单独写成一个函数,调用就可以。
我没有测试,你试一下吧。
goodname008 2004-08-09
  • 打赏
  • 举报
回复
也可以用API中的Arc和ArcTo画。

Arc,ArcTo

VB声明
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)
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)
说明
象注解中那样画一个圆弧。(X1,Y1)和(X2,Y2)定义了椭圆的一个范围(约束)矩形。从矩形中心点到点(X3,Y3)的一条线段与椭圆的交点标志着圆弧的起点。而到(X4,Y4)的一条线与椭圆的交点则标志着圆弧的终点。ArcTo函数会将当前画笔位置设为弧的终点,而Arc函数则不会对当前的画笔位置造成影响
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
hdc Long,一个显示场景的句柄
X1,Y1 Long,指定围绕椭圆的一个矩形的左上角位置
X2,Y2 Long,指定围绕椭圆的一个矩形的右下角位置
X3,Y3 Long,指定圆弧起点
X4,Y4 Long,指定圆弧终点
rainstormmaster 2004-08-09
  • 打赏
  • 举报
回复
Circle 方法


在对象上画圆、椭圆或弧。

语法

object.Circle [Step] (x, y), radius, [color, start, end, aspect]

Circle 方法的语法有如下的对象限定符和部分:

部分 描述
object 可选的。 对象表达式,其值为“应用于”列表中的对象。如果object 省略,具有焦点的窗体作为object。
Step 可选的。关键字 ,指定圆、椭圆或弧的中心,它们相对于当前 object 的 CurrentX 和 CurrentY 属性提供的坐标。
(x, y) 必需的。 Single (单精度浮点数),圆、椭圆或弧的中心坐标。object 的 ScaleMode 属性决定了使用的度量单位。
radius 必需的。Single (单精度浮点数),圆、椭圆或弧的半径。 object 的 ScaleMode 属性决定了使用的度量单位。
color 可选的。Long (长整型数),圆的轮廓的 RGB 颜色。如果它被省略,则使用 ForeColor 属性值。可用 RGB 函数或 QBColor 函数指定颜色。
start, end 可选的。 Single (单精度浮点数),当弧、或部分圆或椭圆画完以后,start 和 end 指定(以弧度为单位)弧的起点和终点位置。其范围从 -2 pi 到 2 pi 。起点的缺省值是0; 终点的缺省值是2 * pi。
aspect 可选的。 Single (单精度浮点数),圆的纵横尺寸比。缺省值为 1.0,它在如何屏幕上都产生一个标准圆(非椭圆)。


说明

想要填充圆,使用圆或椭圆所属对象的 FillColor 和 FillStyle 属性。只有封闭的图形才能填充。封闭图形包括圆、椭圆、或扇形。

画部分圆或椭圆时,如果 start 为负,Circle 画一半径到 start,并将角度处理为正的;如果 end 为负,Circle 画一半径到 end,并将角度处理为正的。Circle 方法总是逆时针(正)方向绘图。

画圆、椭圆或弧时线段的粗细取决于 DrawWidth 属性值。在背景上画圆的方法取决于 DrawMode 和 DrawStyle 属性值。

画角度为 0 的扇形时,要画出一条半径(向右画一水平线段),这时给 start 规定一很小的负值,不要给 0。

.可以省略语法中间的某个参数,但不能省略分隔参数的逗号。您指定的最后一个参数后面的逗号是可以省略的。

Circle 执行时,CurrentX 和 CurrentY 属性被参数设置为中心点。

这个方法不能用在 With匛nd With 语句块中。
rainstormmaster 2004-08-09
  • 打赏
  • 举报
回复
画弧的话,可以利用Circle实现

7,763

社区成员

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

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