1. Уважаемые участники и гости, 19 октября codeby будет работать в режиме "Только чтение". Регистрация новых участников будет закрыта. 20 октября портал продолжит работу в прежнем режиме.

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

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

  1. Dock1100

    Dock1100 :-]

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

    etc Гость

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

    etc Гость

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

    Dock1100 :-]

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

    etc Гость

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

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

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

    Dock1100 :-]

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

    EdgarWine Гость

    Репутация:
    0
    Канва (Canvas) - это VCL-ская обёртка просто... =\\

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

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

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