Конференция "Компоненты" » Themed button - 1пиксель потерян по периметру
 
  • Дмитрий (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];
    конечно  минус. опечатка.
 
Конференция "Компоненты" » Themed button - 1пиксель потерян по периметру
Есть новые Нет новых   [134427   +35][b:0][p:0.001]