Передача канваса формы компоненту

  • Автор темы Автор темы Dock1100
  • Дата начала Дата начала
D

Dock1100

Пишу компонент, он должен рисовать на своем и чужом канвасе. Так вот как компоненту передать чужой Canvas компоненту?
 
Вы больше про компонент расскажите. По ним DimaBr специалист, правда он лет семь тут не появлялся, но если вдруг его заинтересует, он подскажет как правильно.
 
Правильнее, скорее всего, это через свойство(а) делать. Пусть пользователь сам укажет где чего рисовать.
 
Правильнее, скорее всего, это через свойство(а) делать. Пусть пользователь сам укажет где чего рисовать.
Это понятно, но как прописать само свойство?
Код:
property OtherCanvas: TCanvas read fothercanvsa write fothercanvas;
Выдаст ошибку поскоку Canvas only read
Пробовал вместо кавас Handle использовать но не рисует
 
На сколько я понимаю, тут нужен редактор свойства. И в нем показываете все контролы, на которых можно рисовать, т.е. есть канва.
Человек просто выбирает тот который нужен, и в свойство прописывается имя того того контрола.
Ну а при рисовании по имени определять контрол и его канву.

примерно так, ... может чего можно и по хитрее

Добавлено: Если вы делаете компонент, то это подразумевает что его свойства можно редактировать и в дизайн-тайм. Можно конечно и нет...
 
ТАДА!:
Код:
fdc := GetWindowDC(FOtherWindow); //FOtherWindow - Handle нужного окна(не канвы)
bitblt(fdc,50,50,width,height,fbmp_draw.Canvas.Handle,0,0,srccopy);
ReleaseDC(fotherWindow, fdc);
 
Канва (Canvas) - это VCL-ская обёртка просто... =\\

Form1.Handle - это HWND окна
Form1.Canvas.Handle - это HDC окна
fdc:=GetDC(Form1.Handle) - тоже самое что и Form1.Canvas.Handle...
fdc:=GetWindowDC(Form1.Handle) - примерно тоже самое что и Form1.Canvas.Handle, только включая рамку окна...

И не надо делать GetDC лишний раз... Просто помнить старый, а при изменении переполучать его...
Ну а перед рисованием проверять существование его...
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab