Форум: "Начинающим";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];
Внизшрифты Найти похожие ветки
← →
copron (2007-12-07 16:54) [0]Подскажите, как во время работы программы можно загрузить свои шрифты и получить каждую букву отдельным изображением.
← →
Dimaxx © (2007-12-07 17:24) [1]Какие шрифты? ttf, fon или нарисованные в bmp виде набора изображений?
← →
DiamondShark © (2007-12-07 17:27) [2]The AddFontResource function adds the font resource from the specified file to the system font table.
The AddFontResourceEx function adds the font resource from the specified file to the system. Fonts added with the AddFontResourceEx function can be marked as private and not enumerable.
The GetGlyphOutline function retrieves the outline or bitmap for a character in the TrueType font that is selected into the specified device context.
← →
copron (2007-12-08 19:34) [3]Что-то у меня не получается разобраться с параметрами функции GetGlyphOutline. И как получить дескриптор шрифта?
← →
copron (2007-12-09 08:58) [4]уточню задание. Мне нужно в image вывести какую-либо букву выбранного шрифта.
procedure TForm1.Button2Click(Sender: TObject);
d: HDC;
GM: TGLYPHMETRICS;
M: TMat2;
begin
fontdialog1.Execute;
SelectObject(d,fontdialog1.Font.Handle);
?:=GetGlyphOutline(d,ord("d"),GGO_BITMAP,GM,?,?,M?);
end;
Какие параметры указывается за место ? и как потом вывести картинку в image?
← →
Dib@zol © (2007-12-09 13:52) [5]Во-первых: Ты DC сначала должен создать.
← →
Dib@zol © (2007-12-09 14:47) [6]Во-вторых, GetGlyphOutline он сцко сложный. Не легче ли например так?
function GetLtrBMP(F:HFONT; L:Char):HBITMAP;
var
DC : HDC;
TF, TB : HGDIOBJ;
S : SIZE;
P : PChar;
R : TRect;
begin
DC:=CreateCompatibleDC(0);
TF:=SelectObject(DC, F);
P:=PChar(string(L));
GetTextExtentPoint32(DC, P, 1, S);
FillChar(R, SIZEOF(TRect), 0);
R.Right:=S.cx;
R.Bottom:=S.cy;
Result:=CreateBitmap(R.Right, R.Bottom, 1, 32, nil);
TB:=SelectObject(DC, Result);
FillRect(DC, R, GetStockObject(GRAY_BRUSH));
SetBkMode(DC, TRANSPARENT);
DrawText(DC, P, 1, R, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
SelectObject(DC, TB);
SelectObject(DC, TF);
DeleteDC(DC);
end;
ЗЫ PChar(string(L)) - канешна не верх изящества, но просто PChar(L) работать отказывается.
← →
copron (2007-12-09 20:09) [7]Спасибо. Но если я пишу следующее
image1.Picture.Bitmap.Handle:=GetLtrBMP(fontdialog1.Font.Handle,"d");
функция не работает.
← →
copron (2007-12-09 20:11) [8]то есть ничего не отображается.
← →
Dib@zol © (2007-12-09 20:17) [9]Какой шрифт выбираешь? Только что перебрал десяток шрифтов - всё пашет...
← →
copron (2007-12-09 20:24) [10]Ну допустим Arial...
В функции ничего не менял.
← →
copron (2007-12-09 20:33) [11]Вот полный текст
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Image1: TImage;
Button1: TButton;
Image2: TImage;
Button2: TButton;
FontDialog1: TFontDialog;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetLtrBMP(F:HFONT; L:Char):HBITMAP;
var
DC : HDC;
TF, TB : HGDIOBJ;
S : SIZE;
P : PChar;
R : TRect;
begin
DC:=CreateCompatibleDC(0);
TF:=SelectObject(DC, F);
P:=PChar(string(L));
GetTextExtentPoint32(DC, P, 1, S);
FillChar(R, SIZEOF(TRect), 0);
R.Right:=S.cx;
R.Bottom:=S.cy;
Result:=CreateBitmap(R.Right, R.Bottom, 1, 32, nil);
TB:=SelectObject(DC, Result);
FillRect(DC, R, GetStockObject(GRAY_BRUSH));
SetBkMode(DC, TRANSPARENT);
DrawText(DC, P, 1, R, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
SelectObject(DC, TB);
SelectObject(DC, TF);
DeleteDC(DC);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
image1.Canvas.FillRect(ClientRect);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
fontdialog1.Execute;
image1.Picture.Bitmap.Handle:=GetLtrBMP(fontdialog1.Font.Handle,"d");
end;
end.
← →
Dib@zol © (2007-12-09 20:34) [12]Попробуй закомментировать FillRect и SetBkMode.
← →
copron (2007-12-09 20:49) [13]Не помогает :(
Может надо в image какие-нибудь параметры выставить?
← →
Dib@zol © (2007-12-09 21:02) [14]Никаких. Попробуй на пустом проекте. У меня сразу заработало...
← →
copron (2007-12-09 21:10) [15]Все равно не пашет :(
Не мог бы ты исходники залить на вебфайл или айфолдер.
← →
Dib@zol © (2007-12-09 21:17) [16]http://webfile.ru/1634476
← →
copron (2007-12-09 21:21) [17]Ты не поверишь, но даже твоя прога у меня не работает!
← →
copron (2007-12-09 21:21) [18]У меня истерика :(
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c