using Cairo;mono c#CairoHelper.Translate
我在一个更大的矩形内绘制了一个矩形女巫是在一个绘图区域内。
我已成功地附上事件绘图区域女巫一个对象我从它扩展
this.AddEvents ((int) EventMask.ButtonPressMask);
this.ButtonPressEvent += delegate(object o, ButtonPressEventArgs args) {
hasInterface(args.Event.X, args.Event.Y);
Console.WriteLine("Button Pressed " + args.Event.X + ", " + args.Event.Y);
};
我使用动态绘图方块:
cr.Translate(width/2, height/2);
cr.Rectangle((pX + (i * tmp)) , pY, boxsize, boxsize);
private void recordPosition(double x, double y)
{
x = x*2;
y = y*2;
boxCoordinates.Add(new double[,]
{
{x, y}
}
); // store coords
}
List<double,double> boxCoordinates
所以对于在绘图区域内,正方形绘制在x = 0,y = 0处,从“外部”的角度来看,它位于x = 90,y = 45; width = 180,height = 100 我正在使用翻译(因为这是复制的一半)的大小/ 2,所以这意味着绘图区域正在做一个正方形的大小调整,以解决这个问题,我保存位置的把它乘以2,但这不起作用,我得到了绘制的矩形之外的“点击”。
这样做的最好方法是什么?我的意思是将X Y位置从窗口翻译到绘图区域,我发现这在其他语言中是可行的,但不知道如何在C#中执行此操作,并且从单声道执行绘图区域。
感谢您的任何帮助。
有一个疑问,逻辑很像我在做什么,但偏移变量从哪里来,我的意思是你如何初始化它? 另外,我使用List来保持形状的位置,但使得更多的感觉像你做的那样做,但为了测试我正在考虑继续使用List。 –
2012-02-26 21:50:01
偏移将成为您的视界左上角在您的世界中的位置。保留大量列表对象似乎很浪费。 – IanNorton 2012-02-27 10:30:09
我的意思是更像列表形状有x和y和有关该对象的其他细节。谢谢你的帮助。 –
2012-02-27 22:58:35