Для отдельного окна/приложения вроде можно создать свой шрифт, который потом использовать в тексте. Чтобы отключить сглаживание нужно создавать шрифт с флагом NONANTIALIASED_QUALITY (подробнее CreateFont - MSDN)Возник следующий вопрос - возможно-ли локально, для VCL-окна отключить сглаживание шрифтов (Cleartype)? доступ к окну только по хендлу, хендл известен.
myFont:= CreateFont(0, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, NONANTIALIASED_QUALITY, FF_DONTCARE, PChar('Arial'));
SendMessage(myHandle, WM_SETFONT, myFont, 0);
var
s1, s2: string;
istrue: boolean = true;
procedure TForm1.FormCreate(Sender: TObject);
begin
s1:='text1'; s2:='text2';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if istrue then Edit1.Text:= s1
else Edit1.Text:= s2;
istrue:=not istrue;
end;
var
s1, s2, s3: string;
i: integer = 1;
procedure TForm1.FormCreate(Sender: TObject);
begin
s1:='text1'; s2:='text2'; s3:='text3';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if i = 1 then Edit1.Text:= s1
else if i = 2 then Edit1.Text:= s2
else if i = 3 then Edit1.Text:= s3;
i:=i+1;
if i=4 then i:=1;
end;
Альфа канал (там и полупрозрачность есть). С вырезанием не то получается, так как надо и полупрозрачность (уже писал,но повторюсь - у InnoUI есть это).Так нужен именно альфа-канал или частичная прозрачность (вырезание определенного цвета)?
library imgs;
uses
Windows, GDIPAPI, GDIPOBJ, GDIPUTIL;
{$R *.res}
var
img: TGPImage;
graph: TGPGraphics;
graphp: Pointer;
p: TGPRectF;
procedure create_logo(wnd: HWND; FileName: PChar; X, Y, W, H: Integer) stdcall;
begin
try
img := TGPImage.Create(filename);
p.X:=x;
p.Y:=y;
p.Width:=w;
p.Height:=h;
graph := TGPGraphics.Create(getdc(wnd));
graph.DrawImage(img, p);
GdipCreateFromHWND(wnd, graphp);
UpdateWindow(wnd);
except
end;
end;
procedure Free(); stdcall;
begin
img.Free;
graph.Free;
GdiplusShutdown(1);
end;
exports create_logo;
exports free;
begin
end.
там нету перерисовки, вот и не видно картинки.Всем доброго времени суток. Не могу разобраться с GDI+. Не хочет он рисовать на окне WizardForn. Тупо пропускает загрузку и все. Выручайте.
я и думаю что-то знаком он мнеКстати, Репачек, ты запалился
перерисовка не окна а картинки - т.е. заменяешь процедуру обработки сообщений на свою, там рисуешь картинку и вызываешь старый обработчик.Пробовал UpdateWindow, RedrawWindow, BeginPaint... Нифига не работает.
Так как-раз таки и нужно перекрывать функцию рисования самого окна, чтобы нарисовать свою картинку. Точнее нужно перекрыть оконную процедуру и уже в ней при сообщении WM_PAINT рисовать все что нужно.перерисовка не окна а картинки - т.е. заменяешь процедуру обработки сообщений на свою, там рисуешь картинку и вызываешь старый обработчик.