с использованием Cairo;
Я нарисовал прямоугольник внутри большего прямоугольника, который находится внутри области рисования.
Мне удалось прикрепить событие к области рисования, которое является объектом Iрасширились от него
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 с "внешней" точки зрения это х = 90, у = 45;ширина = 180, высота = 100 Я использовал translate (так как половина этого скопирована) размера / 2, так что это означает, что область рисования делала изменение размера квадрата, чтобы решить эту проблему, я сохранял умножение позицииэто на 2, но это не работает, если я получаю "хиты" за пределами нарисованного прямоугольника.
Каков наилучший способ сделать это?Я имею в виду перевод позиций XY из окна в область рисования, я видел, что это возможно на других языках, но не уверен, как это сделать в C # и в области рисования из моно.
Спасибо за любую помощь.