Вопрос № 140554: Хочется сделать так: На картинке (TImage) по нажатию левой кнопкой мыши вырисовывать (или создавать) еще картинку, которая будет помещаться сверху предыдущей. Один из экспертов порекомендовал на канве TImage отрисовывать объект TGraphic. Но я не р...
Вопрос № 140.554
Хочется сделать так: На картинке (TImage) по нажатию левой кнопкой мыши вырисовывать (или создавать) еще картинку, которая будет помещаться сверху предыдущей. Один из экспертов порекомендовал на канве TImage отрисовывать объект TGraphic. Но я не работал с этим объектом и не знаю как загрузить в него картинку. Может кто-нибудь дополнить процедуру?
Отвечает: Абельхарисов Руслан/Marked One
Здравствуйте, Марков Александр Сергеевич! Положите на форму еще один TImage. Загрузите в него второй рисунок. В обработчике события первого Image'а OnMouseDown вставьте этот код:
Код:
//Здесь рисуем if Button = mbLeft then //Копируем второй рисунок
в место куда щелкнули мышью и центр картинки которая появляется, будет как раз в том месте, где щелкнули. Объяснение применения процедуры смотрите ниже. Image1.Canvas.BrushCopy(Rect(x-(Image2.Width div 2), y-(Image2.Height div 2), x+(Image2.Width div 2), y+(Image2.Height div 2)), Image2.Picture.Bitmap, Rect(0, 0, Image2.Width, Image2.Height), 0);
procedure TImage.Canvas.BrushCopy(const Dest: TRect; Bitmap: TBitmap; const Sourc
e: TRect; Color: Tcolor); Dest -область приёмника(координаты области куда копировать). Dest объявлена как структура TRect. Чтобы из координат получить структуру TRect используем следующую конструкцию: Rect(X1, Y1, X2, Y2). X1, Y1, X2, Y2-координаты левого верхнего и правого нижнего угла области. В нашем случае указано что мы копируем в область с координатами: x-половина ширины, y-половина высоты, x+половина ширины, y+половина высоты второй картинки, где x, y-координаты места куда щелкнули мышью.
Bitmap -картинка которая будет копироватся. У нас это вторая картинка. Source -область источника(откуда будем копировать). Color -прозрачный цвет, у нас его нет, поэтому указано 0. Удачи!!!
Ответ отправил: Абельхарисов Руслан/Marked One (статус: Студент)
Ответ отправлен: 24.07.2008, 23:21 Оценка за ответ: 5 Комментарий оценки: Именно то, что нужно:))