Показать сообщение отдельно
  #4  
Старый 14.12.2011, 13:04
Delirium Delirium вне форума
Прохожий
 
Регистрация: 25.11.2011
Адрес: Москва
Сообщения: 6
Версия Delphi: 2006, XE2
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Компонент надо либо под Ansi затачивать, либо под юникод.
Нет, дело не в кодировке...
По свойству ByUser выполняется одна из процедур doUserDraw и DrawText. Интересна функция DrawText тем, что после помещения в локальный битмап текста и слияния этого битмапа с канвой компонента нарисованной в doUserDraw фон текста остается непрозрачным, хотя этого быть не должно...
вот код функции DrawText
Код:
procedure TjvShape.DrawText;
var
    bm:Tbitmap;
    fx,fy,fw,fh:integer;
begin
    bm:=tbitmap.create;
    bm.width:=width;
    bm.height:=height;
    bm.canvas.font.assign(font);
    fw:=bm.canvas.TextWidth (FCaption);
    fh:=bm.canvas.TextHeight (FCaption);
    if fw>xw then
      fx:=5
      else
      fx:=(width-fw) div 2;
    if fh>yh then
      fy:=5
      else
      fy:=(height-fh) div 2;
    if FCaptionCentered then
    textrotate(bm,fx,fy,FCaptionAngle,FCaption,font)
    else
    textrotate(bm,FCaptionX,FCaptionY,FCaptionAngle,FCaption,font);
   bm.transparent:=true;
   bm.TransparentMode :=tmfixed;
   bm.TransparentColor :=clwhite;
   canvas.Draw (0,0,bm);
   bm.free;
end;

Хелп, как говорится)
Ответить с цитированием