Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

About Canvas...

2.0K
30 августа 2004 года
Byku
64 / / 30.08.2004
Нужно нарисовать на кнопке примитив. Но не получается! а причину понять не могу... на форме рисует нормально а на кнопке , ну никак... ПАМАГИТЕ!!
8.2K
30 августа 2004 года
DigitalWolF
12 / / 28.08.2004
Как я понял из темы, для своих целей ты пытаешься использовать Canvas этой самой кнопки... Начать с того, что Canvas - далеко не оптимальная вещь, тут Borland явно переборщила с обьектно-ориентированием, например если использовать свойство Pixels то при каждом рисовании пиксела при помощи присвоения Pixels[x,y]:=с весь канвас перерисовывается на экране целиком... Это кроме того что этот самый канвас для разных компонентов работает по разному... Так что гораздо эффективнее использовать WinAPI: сначала берешь Handle нужного тебе обьекта и получаешь его device context (идентефикатор поверхности) при помощи GetDC(Handle), затем используешь этот DC в вызовах типа BitBlt (отрисовка битмапа) или других WinAPI-функциях рисования.
2.0K
31 августа 2004 года
Byku
64 / / 30.08.2004
так все же у кнопки есть канва? можеш написать пример использования канвы для кнопки? это бы мне очень помогло. Мне на кнопке нужно рисовать очень мало. нужно рисовать 8 квадратиков. Они должны обозначать ручки для ресайза
8.2K
31 августа 2004 года
DigitalWolF
12 / / 28.08.2004
По неизвестным современной науке причинам Borland не сделали Canvas для некоторых обьектов, в т.ч. для tButton. Но с DeviceContext'ом общаться ничуть не сложнее:

 
Код:
var
 DC:HDC;
begin
 DC:=GetDC(Button1.Handle);    // получить DC кнопки
 Rectangle(DC,2,10,6,15);      // рисуешь финкциями WinAPI
 ReleaseDC(Button1.Handle,DC); // чтобы не оставлять мусора
end;
2.0K
31 августа 2004 года
Byku
64 / / 30.08.2004
Спасибо! Но вот есть еще вопрос. Мне нужно что при нажитии на кнопку анимация нажатия не проигрывалась.. как это сделать?
302
31 августа 2004 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by Byku
Спасибо! Но вот есть еще вопрос. Мне нужно что при нажитии на кнопку анимация нажатия не проигрывалась.. как это сделать?


Ты делаешь какой-то RAD инструмент По типу Delphi? Кинул, настроил, забыл?
Если так, то могу предложить тебе использовать не баттон во время создания/редактирования, а что-нибудь другое, а сам баттон рисовать.

2.0K
31 августа 2004 года
Byku
64 / / 30.08.2004
Ты угадал :) Мне нужно чтоб моя прога работала аналогично делфи в дизайнтайме. Но потом при переключении режима в моей проге, все элементы должны функционировать нормально.
8.2K
31 августа 2004 года
DigitalWolF
12 / / 28.08.2004
В таком случае естественно логичнее рисовать изображение кнопки самому, а настоящую кнопку создавать только когда она реально должна работать как кнопка... Правда тогда возникает другой вопрос - как нарисовать кнопку чтобы она выглядела так же как настоящая, но до этого надо решить - нужно ли тебе точное сходство или может ограничиться схематическим рисунком? Например, если этим "редактором" будешь пользоваться только ты ну и допустим члены твоей девелоперской команды, нафиг тебе портретное сходство? если же оно реально необходимо - придется тебе усиленно копаться в WinAPI, исследовать системные библиотеки на предмет наличия кода отрисовки элементов управления... Жуткий неблагодарный труд, скажу тебе по секрету... Так что я в любом случае остановился бы на варианте
SetColor(Gray);
Rect(x1+1, y1+1, x2+1, y2+1);
SetColor(Black);
Rect(x1, y1, x2, y2);
10
31 августа 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by DigitalWolF
если же оно реально необходимо - придется тебе усиленно копаться в WinAPI, исследовать системные библиотеки на предмет наличия кода отрисовки элементов управления... Жуткий неблагодарный труд, скажу тебе по секрету...


К слову сказать, конструктор Дельфи заменяет процедуру окна (WndProc) на собственную, в которой и производится вся необходимая обработка. Аналогичным образом поступают и другие известные редакторы ресурсов.

2.0K
01 сентября 2004 года
Byku
64 / / 30.08.2004
Я в делфи не так долго, и очень многого незнаю.. Если вас не затруднит, подскажите где почитать про это подробно? язык значения не имеет, ну.. или русский или английский конечно :)
2.0K
09 сентября 2004 года
Byku
64 / / 30.08.2004
Цитата:
Originally posted by DigitalWolF
По неизвестным современной науке причинам Borland не сделали Canvas для некоторых обьектов, в т.ч. для tButton. Но с DeviceContext'ом общаться ничуть не сложнее:

 
Код:
var
 DC:HDC;
begin
 DC:=GetDC(Button1.Handle);    // получить DC кнопки
 Rectangle(DC,2,10,6,15);      // рисуешь финкциями WinAPI
 ReleaseDC(Button1.Handle,DC); // чтобы не оставлять мусора
end;



А как мне сделать чтоб виден был только прямоуголник, изменить его толщину и цвет? и убрать заливку

8.2K
09 сентября 2004 года
DigitalWolF
12 / / 28.08.2004
Для линии-границы:

Pen:=CreatePen(Style,Width,Color);
SelectObject(DC,Pen);

Для заливки:
либо SetBkColor
либо CreateBrushIndirect(...); SelectObject(...);

И вообще, чтобы не спрашивать каждую мелочь на форуме - возьми WinSDK который ставится вместе с Дельфёй и почитай. Много полезного узнаешь...
2.0K
13 сентября 2004 года
Byku
64 / / 30.08.2004
Цитата:
Originally posted by DigitalWolF
Для линии-границы:

Pen:=CreatePen(Style,Width,Color);
SelectObject(DC,Pen);

Для заливки:
либо SetBkColor
либо CreateBrushIndirect(...); SelectObject(...);

И вообще, чтобы не спрашивать каждую мелочь на форуме - возьми WinSDK который ставится вместе с Дельфёй и почитай. Много полезного узнаешь...



С заливкой ну фигня какая то .. Не получается..

2.0K
16 сентября 2004 года
Byku
64 / / 30.08.2004
С заливкой я разобрался :) но вот как сделать ее прозрачной...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог