画圆图的若干问题

时间:2022-07-19 06:52:34
我要画一个10个同心圆,半径不一样的,但是不清楚怎么画,有若干疑问:
1:可否用画笔直接画圆,有的话请大侠提供下函数?
2:用画刷画圆,我查了下,
        CBrush *pOldBrush, *pBrush;
       pOldBrush = (CBrush *)myDC.SelectStockObject(NULL_BRUSH);
       DC.Ellipse(60,60,200,200);
       DC.SelectStockObject(pOldBrush);
   这样画没问题吧?(呵呵,刚查,等下试试);
3:如何在圆弧上确定某一个点的位置,用什么函数?(用来在不同的圆弧上连线,)
4:如何画斜线(不用moveto lineto函数),试问下,maht.h里的sin,cos函数行么···?
希望大侠顶进来,给些例子,在此谢谢大家了!

15 个解决方案

#1


1、不行

#2


1.圆是封闭性的图形,如果调用API的话必须通过画笔和画刷才行,当然画刷可以是空画刷,如果不用api的画也是可以的,通过拟合也能做到
  除非比较特殊的场合很少有这么做的,一般都是通过api
2.这个不应当是问题,书上由很多这样的例子
3.太笼统,要根据具体的问题来,基本上是套公式
4.可以的通过CDC的SetPixel描点实现,不过你最好想一下,真的有必要这样做嘛

#3


用besizer曲线应该可以拟合圆吧,但是感觉不太必要。
另外如何画斜线SetPixel效率很差,可以操作位图来实现

#4


谢谢楼上的鼎力支持,对我提出的问题,我归纳下
算已解决的
   问题1、问题2:采用空画刷画圆 
   问题4:采用moveto lineto函数来画直线
未解决的:
   问题3:由于我画圆是用来直观的显示机器的运动状况,而每个圆代表一个数据(当然有X轴Y轴了),用来实时监测,
          机器是24小时的,所以我把同心圆分成24等分,每一段圆弧代表1个小时,在某个时间段里的这些圆弧中,将
          1个小时采集上来的数据点在相应的圆弧上连接起来(弧度代表时间),
           所以,我想知道的是怎么样通过圆弧来确定圆弧上的点,呵呵,都有点说不清楚了,大侠先顶进,不明白的说下···

#5


圆弧上的点代表什么啊?!

#6


我先画好X轴Y轴,然后以坐标原点为圆心,画10个同心圆,每个圆代表一个数值,比如说第10个圆代表数值100(当然是指圆弧上的任意点都为100咯,这个可以理解吧),当以Y轴朝上为真方向,以时钟的方式转过一定角度后,指针不是和圆弧有个交点的么(其实一直有交点的,只是圆弧角度不一样而已),那个点就是我所说的 圆弧上的点 ,也就是我们平时说的 对应点,呵呵,

#7


我们平时找点不是要确定 (x,y)的么,我就不知道怎么确定圆弧上的点了,
因为它是以弧度为单位的,然后通过半径来确定的,以前没接触过,呵呵

#8


自己顶上去我········
  我用(Rcos(角度),Rsin(角度))来确定一个点,不同的R代表不同的圆,呵呵,貌似这样可以呢,
只是不知道在VC6.0里支持不支持这个函数,是不是要添加math.h呢?

#9


这么多现成的API绘图函数不调用,偏要走弯路。又不是绘正弦曲线什么的,有必要采用描点连线的方法吗。

#10


哪些?

#11


计算每个时间的点的坐标

然后LINETO就可以了啊

#12


就是根据x^2+y^2=R*R画点,楼主你真费劲

#13


进来学习,帮顶

#14


怎么样通过圆弧来确定圆弧上的点??
圆弧是什么?
只要知道圆弧的两个端点的(x,y)话 我想可以自己(去繁取简地)做一个遍历的方法也可以实现。通过x平方加y的平方等于R的平方做。

#15


恩 方法很多 其实就是繁和简的问题

#1


1、不行

#2


1.圆是封闭性的图形,如果调用API的话必须通过画笔和画刷才行,当然画刷可以是空画刷,如果不用api的画也是可以的,通过拟合也能做到
  除非比较特殊的场合很少有这么做的,一般都是通过api
2.这个不应当是问题,书上由很多这样的例子
3.太笼统,要根据具体的问题来,基本上是套公式
4.可以的通过CDC的SetPixel描点实现,不过你最好想一下,真的有必要这样做嘛

#3


用besizer曲线应该可以拟合圆吧,但是感觉不太必要。
另外如何画斜线SetPixel效率很差,可以操作位图来实现

#4


谢谢楼上的鼎力支持,对我提出的问题,我归纳下
算已解决的
   问题1、问题2:采用空画刷画圆 
   问题4:采用moveto lineto函数来画直线
未解决的:
   问题3:由于我画圆是用来直观的显示机器的运动状况,而每个圆代表一个数据(当然有X轴Y轴了),用来实时监测,
          机器是24小时的,所以我把同心圆分成24等分,每一段圆弧代表1个小时,在某个时间段里的这些圆弧中,将
          1个小时采集上来的数据点在相应的圆弧上连接起来(弧度代表时间),
           所以,我想知道的是怎么样通过圆弧来确定圆弧上的点,呵呵,都有点说不清楚了,大侠先顶进,不明白的说下···

#5


圆弧上的点代表什么啊?!

#6


我先画好X轴Y轴,然后以坐标原点为圆心,画10个同心圆,每个圆代表一个数值,比如说第10个圆代表数值100(当然是指圆弧上的任意点都为100咯,这个可以理解吧),当以Y轴朝上为真方向,以时钟的方式转过一定角度后,指针不是和圆弧有个交点的么(其实一直有交点的,只是圆弧角度不一样而已),那个点就是我所说的 圆弧上的点 ,也就是我们平时说的 对应点,呵呵,

#7


我们平时找点不是要确定 (x,y)的么,我就不知道怎么确定圆弧上的点了,
因为它是以弧度为单位的,然后通过半径来确定的,以前没接触过,呵呵

#8


自己顶上去我········
  我用(Rcos(角度),Rsin(角度))来确定一个点,不同的R代表不同的圆,呵呵,貌似这样可以呢,
只是不知道在VC6.0里支持不支持这个函数,是不是要添加math.h呢?

#9


这么多现成的API绘图函数不调用,偏要走弯路。又不是绘正弦曲线什么的,有必要采用描点连线的方法吗。

#10


哪些?

#11


计算每个时间的点的坐标

然后LINETO就可以了啊

#12


就是根据x^2+y^2=R*R画点,楼主你真费劲

#13


进来学习,帮顶

#14


怎么样通过圆弧来确定圆弧上的点??
圆弧是什么?
只要知道圆弧的两个端点的(x,y)话 我想可以自己(去繁取简地)做一个遍历的方法也可以实现。通过x平方加y的平方等于R的平方做。

#15


恩 方法很多 其实就是繁和简的问题