var
DC:HDC;
begin
DC:=GetDC(Button1.Handle); // получить DC кнопки
Rectangle(DC,2,10,6,15); // рисуешь финкциями WinAPI
ReleaseDC(Button1.Handle,DC); // чтобы не оставлять мусора
end;
About Canvas...
Нужно нарисовать на кнопке примитив. Но не получается! а причину понять не могу... на форме рисует нормально а на кнопке , ну никак... ПАМАГИТЕ!!
Как я понял из темы, для своих целей ты пытаешься использовать Canvas этой самой кнопки... Начать с того, что Canvas - далеко не оптимальная вещь, тут Borland явно переборщила с обьектно-ориентированием, например если использовать свойство Pixels то при каждом рисовании пиксела при помощи присвоения Pixels[x,y]:=с весь канвас перерисовывается на экране целиком... Это кроме того что этот самый канвас для разных компонентов работает по разному... Так что гораздо эффективнее использовать WinAPI: сначала берешь Handle нужного тебе обьекта и получаешь его device context (идентефикатор поверхности) при помощи GetDC(Handle), затем используешь этот DC в вызовах типа BitBlt (отрисовка битмапа) или других WinAPI-функциях рисования.
так все же у кнопки есть канва? можеш написать пример использования канвы для кнопки? это бы мне очень помогло. Мне на кнопке нужно рисовать очень мало. нужно рисовать 8 квадратиков. Они должны обозначать ручки для ресайза
Код:
Спасибо! Но вот есть еще вопрос. Мне нужно что при нажитии на кнопку анимация нажатия не проигрывалась.. как это сделать?
Цитата:
Originally posted by Byku
Спасибо! Но вот есть еще вопрос. Мне нужно что при нажитии на кнопку анимация нажатия не проигрывалась.. как это сделать?
Спасибо! Но вот есть еще вопрос. Мне нужно что при нажитии на кнопку анимация нажатия не проигрывалась.. как это сделать?
Ты делаешь какой-то RAD инструмент По типу Delphi? Кинул, настроил, забыл?
Если так, то могу предложить тебе использовать не баттон во время создания/редактирования, а что-нибудь другое, а сам баттон рисовать.
Ты угадал :) Мне нужно чтоб моя прога работала аналогично делфи в дизайнтайме. Но потом при переключении режима в моей проге, все элементы должны функционировать нормально.
SetColor(Gray);
Rect(x1+1, y1+1, x2+1, y2+1);
SetColor(Black);
Rect(x1, y1, x2, y2);
Цитата:
Originally posted by DigitalWolF
если же оно реально необходимо - придется тебе усиленно копаться в WinAPI, исследовать системные библиотеки на предмет наличия кода отрисовки элементов управления... Жуткий неблагодарный труд, скажу тебе по секрету...
если же оно реально необходимо - придется тебе усиленно копаться в WinAPI, исследовать системные библиотеки на предмет наличия кода отрисовки элементов управления... Жуткий неблагодарный труд, скажу тебе по секрету...
К слову сказать, конструктор Дельфи заменяет процедуру окна (WndProc) на собственную, в которой и производится вся необходимая обработка. Аналогичным образом поступают и другие известные редакторы ресурсов.
Я в делфи не так долго, и очень многого незнаю.. Если вас не затруднит, подскажите где почитать про это подробно? язык значения не имеет, ну.. или русский или английский конечно :)
Цитата:
Originally posted by DigitalWolF
По неизвестным современной науке причинам Borland не сделали Canvas для некоторых обьектов, в т.ч. для tButton. Но с DeviceContext'ом общаться ничуть не сложнее:
По неизвестным современной науке причинам 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;
DC:HDC;
begin
DC:=GetDC(Button1.Handle); // получить DC кнопки
Rectangle(DC,2,10,6,15); // рисуешь финкциями WinAPI
ReleaseDC(Button1.Handle,DC); // чтобы не оставлять мусора
end;
А как мне сделать чтоб виден был только прямоуголник, изменить его толщину и цвет? и убрать заливку
Pen:=CreatePen(Style,Width,Color);
SelectObject(DC,Pen);
Для заливки:
либо SetBkColor
либо CreateBrushIndirect(...); SelectObject(...);
И вообще, чтобы не спрашивать каждую мелочь на форуме - возьми WinSDK который ставится вместе с Дельфёй и почитай. Много полезного узнаешь...
Цитата:
Originally posted by DigitalWolF
Для линии-границы:
Pen:=CreatePen(Style,Width,Color);
SelectObject(DC,Pen);
Для заливки:
либо SetBkColor
либо CreateBrushIndirect(...); SelectObject(...);
И вообще, чтобы не спрашивать каждую мелочь на форуме - возьми WinSDK который ставится вместе с Дельфёй и почитай. Много полезного узнаешь...
Для линии-границы:
Pen:=CreatePen(Style,Width,Color);
SelectObject(DC,Pen);
Для заливки:
либо SetBkColor
либо CreateBrushIndirect(...); SelectObject(...);
И вообще, чтобы не спрашивать каждую мелочь на форуме - возьми WinSDK который ставится вместе с Дельфёй и почитай. Много полезного узнаешь...
С заливкой ну фигня какая то .. Не получается..
С заливкой я разобрался :) но вот как сделать ее прозрачной...