Вывод текста на канве картинки

Материал из DRKB


При использовании BitBtn Caption(текст) и картинка(bitmap) из файла не видны одновременно. Почему?

Это может происходить если картинка слишком велика. Класс TBitBtn сначала рисует картинку, а затем выводит текст над, под, слева или справа от картинки (в зависимости от свойства Layout). Если размер картинки такой же как у всей кнопки для вывода текста просто не остается места. Если Вам нужно получить кнопку такого же размера как Ваша картинка и видеть при этом надпись на кнопке Вам придется выводить текст надписи непосредственно на канву картинки.


var
  bm: TBitmap;
  OldBkMode: Integer;
begin
  bm := TBitmap.Create();
  try
    bm.Width := BitBtn1.Glyph.Width;
    bm.Height := BitBtn1.Glyph.Height;
    bm.Canvas.Draw(0, 0, BitBtn1.Glyph);
    OldBkMode := SetBkMode(bm.Canvas.Handle, Transparent);
    bm.Canvas.TextOut(0, 0, 'The Caption');
    SetBkMode(bm.Canvas.Handle, OldBkMode);
    BitBtn1.Glyph.Assign(bm);
  finally
    bm.Free();
  end;
end;


Source: http://delphiworld.narod.ru
ID: 03636
ID: 03659