Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получается рисовать на канве, доступна только для чтения 
:(
    Опции темы
ksili
Дата 11.1.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Мне нужно рисовать на канве. Однако как я понял для рисования доступна только канва формы. А канва компонентов доступна только для чтения.
Например, для
Код

Panel1->Canvas->Brush->Color = clWhite;
выдаёт ошибку 'TCustomControl::Canvas' is not accessible
А для
Код

Shape1->Canvas->Brush->Color = clWhite;
выдаёт ошибку 'TGraphicControl::Canvas' is not accessible
А мне желательно рисовать на каком-нить компоненте, чтоб легко можно было перемещать нарисованное, и обрабатывать событие FormResize.
Или есть какие-то компоненты для рисования?



--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
_hunter
Дата 11.1.2006, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



у панели канвы нет. у фигуры, как я понимаю, тоже.
используй TControlCanvas...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Abrek
Дата 11.1.2006, 12:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А можно еще использовать GetDC и вставлять туда нужный тебе указатель Panel1->Handle. А дальше рисуешь winapi-шными функциями.
  Вверх
Partizan
Дата 11.1.2006, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 7
Всего: 67



есть же PaintBox в конце концов....на крайний случай на канве TImage тоже можно рисовать стандартными методами...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
FRAGNATIC
Дата 12.1.2006, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



Цитата(_hunter @ 11.1.2006, 12:24 Найти цитируемый пост)

у панели канвы нет

но её можно создать =)
Код

var    
  canva: Tcanvas;    
begin    
  canva:=TCanvas.Create;    
  canva.Handle:=GetDC(Panel1.Handle);    
  canva.TextOut(0,0,'lol');    
end;

PM MAIL   Вверх
ksili
Дата 12.1.2006, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Канву создать получилось. В Билдере это выглядит так:
Код

TCanvas *canva;

 canva = new TCanvas;
 canva->Handle = GetDC(Panel2->Handle);

Однако рисовать не получается. Например, строки
Код

 canva->Pen->Style = psSolid;
 canva->Brush->Color = clBlack;
 canva->TextOut(10,10,"lol");
 canva->FillRect(Panel2->ClientRect);

не производят никакого эффекта. Панель как была серая так и остаётся


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
_hunter
Дата 12.1.2006, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



я ж говорю TControlCanvas используй


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
ksili
Дата 12.1.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



А как использовать? В предыдущем примере вместо
Код

TCanvas *canva;
 canva = new TCanvas;

написать
Код

TControlCanvas *canva;
 canva = new TControlCanvas ;
?

Раз этот класс производный от TControl, значит это визуальный компонент?

Ой, ошибся он производный не от TControl, а от TCanvas

Это сообщение отредактировал(а) ksili - 12.1.2006, 11:54


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Artemon
Дата 21.1.2006, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Код

TControlCanvas *nv;
TControlCanvas->Control = Panel1;


Рисуй.............



--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0689 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.