-
Дмитрий (26.06.14 16:50) [0]Здравствуйте!!
Есть кнопка. Фон рисуется вот таким кодом.
Подскажите пожалуйста, почему по периметру кнопки есть незадействованная область шириной в 1 пиксель?? это хорошо видно если кнопка - на панели нестандартного цвета. да и в целом, эта область не перерисовывается (видны артефакты...).if (StyleServices.Enabled) then begin
aRect:=GetClientRect;
Details:=StyleServices.GetElementDetails(Button);
StyleServices.DrawElement(Canvas.Handle, Details, aRect); -
Дмитрий (26.06.14 17:08) [1]копия экрана http://prntscr.com/3woaba
-
Rouse_ © (26.06.14 19:39) [2]WM_NCPAINT кто обрабатывает?
-
Rouse_ © (26.06.14 19:40) [3]Глянь вот это по поводу отрисовки NC: http://rouse.drkb.ru/other.php#fwmenuex
-
Дмитрий (26.06.14 22:43) [4]Спасибо, но я не уверен что мы говорим об одном и том же.
Когда моя кнопка не "тематическая", отрисовка проходит нормально. т.е. клиентскую область я задействую полностью.
Но когда я передаю всю клиентскую область процедуре StyleServices.DrawElement - она почему-то не задействует крайний пиксель.
Я могу конечно сделать перед ее вызовом следующее - aRect.Inflate(1,1,1,1);
но это не решает проблемы так как самые угловые пиксели не задействуются (в выбранной мной стандартной теме Windows7 уголки контролов немного скругленные). -
Дмитрий (26.06.14 22:46) [5]Ха, нашел в чем проблема.
Когда у меня тематическая кнопка, я не добавлял ControlStyle:=ControlStyle+[csOpaque]; -
Дмитрий (27.06.14 17:43) [6]**
ControlStyle:=ControlStyle-[csOpaque];
конечно минус. опечатка.