我用API将Delphi默认的坐标系,转成自己的坐标系,并画图,完全符合自己的要求。但是在紧跟着用到的MoveTo, LineTo时,还是按照其默认的坐标系作图,很是奇怪,请问是何道理?
解决方案 »
- 如何在panel上绘图?
- 如何让程序在规定的时间内执行某个按钮的功能?
- 在simplegrah控件上画线。并让线可以平形移动
- 用TQRDBText的Lines.Add方法添加字符串,为什么在报表上不会显示字符串?
- 我在做一个ACTIVEX控件,请问能不能向程序在运行时写入本身一些东西一样,向我的控件写入东西
- 如何得到RadioButton的checked属性改变的通知
- 如何编写日志文件?
- 急,在线100相送。在delphi中的SQL语句中如何处理日期型变量?
- GIS的问题
- "access表的扩展名是什么啊"问题为解决,请刚才的朋友再帮帮忙
- 小菜问题——如何在窗口最大化时让其中的控件也跟着最大化呢?如dbgrid,stringgrid等
- 在调用c++制作的dll时如何传入回调函数
int fnMapMode // new mapping mode
);
HDC指定为Image1.canvas.handle
fnMapMode根据你的要求指定一个模式然后你用Image1。.canvas...来画图就是你新设的映射模式的坐标啦,
事实上是先画的坐标系,而且是完全按照我自己定义的坐标系实现的。
但是我想一个一个点在坐标系中画一条曲线,用lineto时,他又还原成在默认的坐标系下作图,就是原点又回到了左上角(我将原点定义为image中间的一点)。
Canvas画图不是以你自己画的坐标系为坐标,你要转换
不知道是不是这个原因,这又是什么道理呢?
乖乖,还在疑惑中...
GDI默认情况下一定使用屏幕坐标的,因此你必须转换。
timeNow: DWord;timeNow:= GetTickCount;
repeat
Application.messageprocess;
until GetTickCount > timeNow + 120000;
imgTime.Canvas.LineTo(1000, 1000);
//以上的都可以实现 LongDelay(nDelayTime);
//问题就出在此,此处的API函数调用造成后面作图的坐标系的错误
//开始测试
//imgTime.Canvas.MoveTo(0, 0);
//imgTime.Canvas.LineTo(6000, 1000);