找本vc的书,看看CDC绘图的章节。
解决方案 »
- 求指点:音视频分割
- 关于SideBar.dll 第三方控件的问题
- peekmessage单位时间内执行的次数是受什么控制的呢
- 简单问题:关于符号
- 关于文件保存对话框
- 视频多播??高手多多指教
- 在类似telnet的终端程序,能够操作读卡器之类的设备用的什么技术!(见正文)
- 有关自动化组件无法释放的问题
- 学习界面编程使用自绘方式,对于PNG按钮在鼠标经过时的变化如何处理?
- 关于内存设备环境的问题...............................................SOS
- 选中一段代码之后全部左移或右移是什么快捷键?
- 在win98下,TCP/IP中设置DNS时,"主机"带表什么意思?该怎么设?
如果只是要画点,简单点,你可以用GDI的SetPixel(...); 要追求高级点,你可以看看directX的函数功能。
void Fractal(double x0, double y0, double x1, double y1, int n)
{
double px,py;
if(n<=N)
{
px=x0+(a*(x1-x0)-b*(y1-y0));
py=y0+(b*(x1-x0)+a*(y1-y0)); putpixel(px,-py,215);
Fractal(x0,y0,px,py,n+1);
Fractal(px,py,x1,y1,n+1);
}}void main(void)
{
ginit();
setviewport(sx,sy);
a=1/(1+t*t);
b=t/(1+t*t);
putpixel(0,0,9);
putpixel(length0,0,12);
Fractal(0.0,0.0,length0,0.0,1);
gend();
}
(此程序在Turbo C 下运行成功)
我搞不懂setviewport()和putpixel()的关系,setviewport()应该是将计算值逻辑映射到屏幕上,putpixel()是画点,在程序里好像看不出两者有何关系。
而在MFC里用CDC::SetViewportExt()和CDC::SetPixel()咋就不行呢???
void Fractal(double x0, double y0, double x1, double y1, int n)
{
double px,py;
if(n<=N)
{
px=x0+(a*(x1-x0)-b*(y1-y0));
py=y0+(b*(x1-x0)+a*(y1-y0)); putpixel(px,-py,215);
Fractal(x0,y0,px,py,n+1);
Fractal(px,py,x1,y1,n+1);
}}void main(void)
{
ginit();
setviewport(sx,sy);
a=1/(1+t*t);
b=t/(1+t*t);
putpixel(0,0,9);
putpixel(length0,0,12);
Fractal(0.0,0.0,length0,0.0,1);
gend();
}
(此程序在Turbo C 下运行成功)
我搞不懂setviewport()和putpixel()的关系,setviewport()应该是将计算值逻辑映射到屏幕上,putpixel()是画点,在程序里好像看不出两者有何关系。
而在MFC里用CDC::SetViewportExt()和CDC::SetPixel()咋就不行呢???
void far setviewport(int left, int top, int right, int bottom, int clip);
他设定了以后绘图函数的输出范围,就是说,以后画点在(0,0)处,实际上是在屏幕上绝对位置(left,top)处,这就是他们的关系;
windows下的GUI绘图有更多功能,包括设置坐标系,映射,单位等,很复杂,如果要好好了解就仔细看看相关的数。如果只是要简单试一下,建议不用管setviewport的,GetDC()之后直接画点就是了,缺省按象素为单位,输出再view的客户区。还有就是,绘图最好在View的OnPaint()里面进行。
即可!!