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

Тема в разделе "Delphi - Компоненты", создана пользователем Dock1100, 30 сен 2010.

  1. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Пишу компонент, он должен рисовать на своем и чужом канвасе. Так вот как компоненту передать чужой Canvas компоненту?
     
  2. etc

    etc Гость

    Вы больше про компонент расскажите. По ним DimaBr специалист, правда он лет семь тут не появлялся, но если вдруг его заинтересует, он подскажет как правильно.
     
  3. etc

    etc Гость

    Правильнее, скорее всего, это через свойство(а) делать. Пусть пользователь сам укажет где чего рисовать.
     
  4. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Это понятно, но как прописать само свойство?
    Код (Text):
    property OtherCanvas: TCanvas read fothercanvsa write fothercanvas;
    Выдаст ошибку поскоку Canvas only read
    Пробовал вместо кавас Handle использовать но не рисует
     
  5. etc

    etc Гость

    На сколько я понимаю, тут нужен редактор свойства. И в нем показываете все контролы, на которых можно рисовать, т.е. есть канва.
    Человек просто выбирает тот который нужен, и в свойство прописывается имя того того контрола.
    Ну а при рисовании по имени определять контрол и его канву.

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

    Добавлено: Если вы делаете компонент, то это подразумевает что его свойства можно редактировать и в дизайн-тайм. Можно конечно и нет...
     
  6. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    ТАДА!:
    Код (Text):
    fdc := GetWindowDC(FOtherWindow); //FOtherWindow - Handle нужного окна(не канвы)
    bitblt(fdc,50,50,width,height,fbmp_draw.Canvas.Handle,0,0,srccopy);
    ReleaseDC(fotherWindow, fdc);
     
  7. EdgarWine

    EdgarWine Гость

    Канва (Canvas) - это VCL-ская обёртка просто... =\\

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

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

Поделиться этой страницей