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