Office中国论坛/Access中国论坛

标题: [求助]已经完成的图形分析,谁知道怎么用已知道的椭圆公式画椭圆???急!!! [打印本页]

作者: wxmins    时间: 2006-6-7 11:16
标题: [求助]已经完成的图形分析,谁知道怎么用已知道的椭圆公式画椭圆???急!!!
最近做了一个容差查询,里面涉及了图形分析,下载后直接放在桌面上打开就可以了.当打开的时候会滑出一个对话框,大家看一下截图:

里面遇到了一个很棘手的问题:怎么利用已知的椭圆公式画椭圆呢,谁能提供VBA相关思路甚至代码,讨论一下.


[此贴子已经被作者于2006-6-8 1:38:59编辑过]


作者: ui    时间: 2006-6-7 18:46
哇,很酷!!
作者: 情比金坚    时间: 2006-6-7 19:37
原文件中已有源代码了,把隐藏文件显示出来就可以看到了
作者: wxmins    时间: 2006-6-7 20:21
哎呀谁知道怎么画椭圆啊,斑竹帮帮忙


作者: fan0217    时间: 2006-6-7 22:27
Circle 方法

Circle 方法用于当 [url=mkMSITStore:C:\Program%20Files\Microsoft%20Office\Office10\2052\Vbaac10.chm::/html/acevtPrint.htm]Print[/url] 事件发生时,在 [url=mkMSITStore:C:\Program%20Files\Microsoft%20Office\Office10\2052\Vbaac10.chm::/html/acobjReport.htm]Report[/url] 对象上画圆、椭圆或圆弧。



expression.Circle(flags, X, Y, radius, color, start, end, aspect)

expression   必需。返回“Applies To”列表中的一个对象的表达式。

flags  必需 Integer 型。

X  必需。[url=mkMSITStore:C:\Program%20Files\Microsoft%20Office\Office10\2052\Vbaac10.chm::/html/acmthCircle.htm#]Single[/url] 型值,表示圆、椭圆或圆弧的中心点的横坐标。所用的度量单位由 object 参数所指定的 Report 对象的 Scale 属性(ScaleModeScaleLeftScaleTopScaleHeightScaleWidth)来确定。

Y  必需。Single 型值,表示圆、椭圆或圆弧的中心点的纵坐标。所用的度量单位由 object 参数所指定的 Report 对象的 Scale 属性(ScaleMode, ScaleLeftScaleTopScaleHeightScaleWidth)来确定。

radius  必需。Single 型值,表示圆、椭圆或圆弧的半径。所用的度量单位由 object 参数所指定的 Report 对象的 Scale 属性(ScaleModeScaleLeftScaleTopScaleHeightScaleWidth)来确定。默认情况下,以为单位度量距离。

color  必需 Long 型。Long 型值,表示圆轮廓的 RGB(红绿蓝)颜色。如果省略该参数,将使用 ForeColor 属性的值。也可以使用 RGB 函数或 QBColor 函数来指定颜色。

start  必需 Single 型。当画圆或椭圆的一部分时,start 参数指定了弧的起点位置(以弧度为单位)。start 参数的默认值是 0 弧度。取值范围从 –2 pi 弧度到 2 pi 弧度。

end  必需 Single 型。当画圆或椭圆的一部分时,
作者: wxmins    时间: 2006-6-8 01:20
"Circle 方法用于当 [url=mkMSITStore:C:\Program%20Files\Microsoft%20Office\Office10\2052\Vbaac10.chm::/html/acevtPrint.htm]Print[/url] 事件发生时,在 [url=mkMSITStore:C:\Program%20Files\Microsoft%20Office\Office10\2052\Vbaac10.chm::/html/acobjReport.htm]Report[/url] 对象上画圆、椭圆或圆弧。"

不是我想要的呀.....5555
作者: 情比金坚    时间: 2006-6-8 01:28
你的椭圆不是画得挺好吗?

[此贴子已经被作者于2006-6-7 17:30:51编辑过]


作者: wxmins    时间: 2006-6-8 01:38




谢谢斑竹提供帮助

帮助示例:

创建一个新的报表。将“主体”节的 打印 属性设为 [事件过程]。在报表的模块中输入下列代码,然后切换到“打印预览”。
  1. Private Sub [b]打印[/b]_Print(Cancel As Integer, PrintCount As Integer)

  2.     Const conPI = 3.14159265359

  3.     Dim sngHCtr As Single, sngVCtr As Single

  4.     Dim sngRadius As Single

  5.     Dim sngStart As Single, sngEnd As Single



  6.     sngHCtr = Me.ScaleWidth / 2     ' Horizontal center.

  7.     sngVCtr = Me.ScaleHeight / 2     ' Vertical center.

  8.     sngRadius = Me.ScaleHeight / 3     ' Circle radius.

  9.     ' Draw circle.

  10.     Me.[b]Circle([/b]sngHCtr, sngVCtr[b])[/b], sngRadius

  11.     sngStart = -0.00000001             ' Start of pie slice.

  12.     sngEnd = -2 * conPI / 3             ' End of pie slice.

  13.     Me.FillColor = RGB(255,0,0)     ' Color pie slice red.

  14.     Me.FillStyle = 0                     ' Fill pie slice.

  15.     ' Draw pie slice within circle.

  16.     Me.[b]Circle([/b]sngHCtr, sngVCtr[b])[/b], sngRadius, , sngStart, sngEnd

  17. End Sub
复制代码

可我想要的是在窗体中实现椭圆的方法,因为我需要的椭圆的大小是固定的,我在已经完成的分析中是使用椭圆工具直接画上去的.事实上我也想到了一种笨办法来实现,那就是创建一个表,根据椭圆公式得到很多组数据,然后由这些数据(很多很多的点,点越多越精确)组成一个椭圆,但无法实现和查询用的(X,Y)图形相重叠,就是现在已经完成的效果.如果不能用VBA实现也可以,请各位高手提供更准确的方法,谢谢!!!
作者: wxmins    时间: 2006-6-8 01:41
以下是引用情比金坚在2006-6-7 17:28:00的发言:


你的椭圆不是画得挺好吗?

我那个是用椭圆工具徒手画上的,跟实际需要的有很大的误差......

[此贴子已经被作者于2006-6-7 17:42:23编辑过]


作者: fan0217    时间: 2006-6-8 01:54
用报表画出椭圆,然后导出报表为快照,最后在窗体中使用快照控件显示就可以了。
作者: wxmins    时间: 2006-6-8 05:58
以下是引用fan0217在2006-6-7 17:54:00的发言:
用报表画出椭圆,然后导出报表为快照,最后在窗体中使用快照控件显示就可以了。



一个很好的思路,不愧为斑竹,可是我仍然无法做到把需要的椭圆真正透明出来,就留一个想要的椭圆的边线,就象用PS抠图那样.

请问,FAN0217,如果是你做这个小工具你会怎么做呢??

效果要我现在的那样

实际上它是一个国家标准的色度查询工具,所需要的X和Y是实际实验后所得到的,由于它有一个适当的范围,就是在椭圆之内它才是合格的.当然这个椭圆的得到也是有讲究的,不过在国家标准中已经给出了准确的值,即椭圆的短半轴\长半轴和相对于X轴的角度大小,还有就是中心点...根据高中学过的椭圆公式可以得到该椭圆.

而我现在不能解决的是这个椭圆该怎么画才准确???

请问,FAN0217,如果是你做这个小工具你会怎么做呢??

请问,FAN0217,如果是你做这个小工具你会怎么做呢??
作者: fan0217    时间: 2006-6-8 06:54
需要知道的几个参数就可以画椭圆:

1.原心的座标

2.半径

3.纵横比



但有个问题,倾斜的椭圆怎么画呢?我不知到了。

[此贴子已经被作者于2006-6-7 23:01:56编辑过]


作者: wxmins    时间: 2006-6-8 09:36
以下是引用情比金坚在2006-6-7 11:37:00的发言:
原文件中已有源代码了,把隐藏文件显示出来就可以看到了

呵呵,这个家伙在说什么呢??
作者: LucasLynn    时间: 2006-6-8 19:28
供你参考。

原贴地址:http://www.office-cn.net/forum.php?mod=viewthread&tid=32929



介绍:
  可以绘制几乎任何合法表达式的函数曲线,包括用户模块中自定义的函数。







源码:


作者: wu8313    时间: 2006-6-9 01:41
学学看看。
作者: wxmins    时间: 2006-6-9 04:26
竟然可以这样作图?印象当中好象一直有C++中的屏幕重画技术......

没来的及细看,但总版主做的这个功能已使我欣喜若狂。

一直想放弃Access,因为它不能生成独立的程序...

谢谢总版主,让我学到很多东西,向你学习!不知道总版主做什么工作??呵呵(不该问的)

研究中...


[此贴子已经被作者于2006-6-8 22:01:24编辑过]


作者: LucasLynn    时间: 2006-6-9 19:01
以下是引用wxmins在2006-6-8 20:26:00的发言:


竟然可以这样作图?印象当中好象一直有C++中的屏幕重画技术......

没来的及细看,但总版主做的这个功能已使我欣喜若狂。

一直想放弃Access,因为它不能生成独立的程序...

谢谢总版主,让我学到很多东西,向你学习!不知道总版主做什么工作??呵呵(不该问的)

研究中...






呵呵,没什么不方便的,我以前是做程序员的,最近几年弃文从商了。不过编程一直还是我的业余爱好。













[此贴子已经被作者于2006-6-9 11:02:21编辑过]


作者: LucasLynn    时间: 2006-6-9 19:02
以下是引用wxmins在2006-6-8 20:26:00的发言:


竟然可以这样作图?印象当中好象一直有C++中的屏幕重画技术......





其实如果熟悉API编程的话,直接在窗体上用API来画椭圆,还更方便些。






作者: zhangni0123    时间: 2009-5-5 13:37
请问椭圆的函数程序代码是什么?




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3