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