怎样修改image的默认原点坐标(50分)

  • 主题发起人 主题发起人 雨幽公主
  • 开始时间 开始时间

雨幽公主

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用image画贝塞尔曲线,但image默认的(0,0)点在它的左上角,用程序生成的贝塞尔曲线如果起始点是(0,0)总要从image的左上角开始画起,而且做出的曲线虽然和我用绘图软件做出的一致,但方向却不对。具体讲用绘图软件做出的曲线需要和image的上边,也就是X轴对称后才会和用软件生成的一样。可我想做得如同绘图软件那样。怎么办?
 
TImage的坐标可以是负数。
 
试用GDI的SetMapMode
 
我不知道你是如何實現的, 應該可用
canvas.ponitto 吧
 
SetViewPortExtEx(image1.Canvas.Handle, ClientWidth, -ClientHeight, nil);
 
各位可以具体给个例子吗?
 
没人会吗?
 
你要了解GDI,有关设备描述表的影射模式,窗口原点,步长,视口原点,步长...
三言两语怎讲得清?
如果不想这么做,那你就在画之前自己做坐标变换
x ----> x
image1.height - y ---> y
 
能再详细一点吗?最好能给个例子看看。谢谢
 
|如果不想这么做,那你就在画之前自己做坐标变换
|x ----> x
|image1.height - y ---> y
画点还可以,画贝塞尔曲线,如果每个点都是你的程序画,
就是说,那个画线过程,每画一点都是你计算好坐标,还可
以用上述的方法
否则,就要改变Image.Canvas的设备描述表了
var
DC: HDC;
begin
DC := SaveDC(Image.Canvas.Handle);
SetMapMode(Image.Canvas.Handle,MM_ANISOTROPIC);
SetWindowOrgEx(Image.Canvas.Handle, 0, Image1.Height - 1, Nil);
SetWindowExtEx(Image.Canvas.Handle, 1, -1, Nil);
在Image.Canvas上画贝塞尔曲线
RestoreDC(Image.Canvas.Handle, DC);
end
 
那怎么解决我做出的图与绘图软件做出的图相反的问题,坐标系好象也不对啊。
 
后退
顶部