Arial Century Courier Georgia Tahoma Verdana Times New Roman
-
+
2. То же самое, что делает макрос «Search» для WinHelp-а.
procedure TForm1.HelpSearchFor;
var S: String ;
begin
S := '';
Application.HelpFile := 'C:\MYAPPPATH\MYHELP.HLP';
Application.HelpCommand(HELP_PARTIALKEY, LongInt(@S));
end ;
Как
заставить Help-файлы нормально отображать русский текст под Windows 3.x?
Nomadic советует:
Удалось вылечить дописыванием в файл проекта в графу Options строчки FORCEFONT=Arial Cyr, причем HC31 ругается что нет такого шрифта, но зато хелп потом нормально показывается практически под любой руссифицированной виндой.
Проверял с [Win31+CyrWin], [Win311Rus], [Win95PE], [Win95Rus].
На NT не проверял.
Причем шрифты в тексте ноомально переключаются и будут не только Arial.
Вот кусок который надо вставить в HPJ файл перед компиляцией –
[OPTIONS]
FORCEFONT=Arial Cyr
256-цветное изображение из res-файла
Вот функция, правильно читающая 256-цветные изображения из файла ресурсов.
function LoadBitmap256(hInstance: HWND; lpBitmapName: PChar): HBITMAP;
var
hPal, hRes, hResInfo: THandle;
pBitmap: PBitmapInfo;
nColorData: Integer;
pPalette: PLogPalette;
X: Integer;hPalette: THandle;
begin
hResInfo:= FindResource(hInstance, lpBitmapName, RT_BITMAP);
hRes:= LoadResource(hInstance, hResInfo);
pBitmap:= Lockresource(hRes);
nColorData:= pBitmap^.bmiHeader.biClrUsed;
hPal := GlobalAlloc(GMEM_MOVEABLE, (16 * nColorData));
{hPal := GlobalAlloc(GMEM_MOVEABLE, (SizeOf(LOGPALETTE) + (nColorData * SizeOf(PALETTEENTRY)));}
pPalette := GlobalLock(hPal);
pPalette^.palVersion := $300;
pPalette^.palNumEntries := nColorData;
for x := 0 to nColorData do begin
pPalette^.palPalentry[X].peRed := pBitmap^.bmiColors[X].rgbRed;
pPalette^.palPalentry[X].peGreen := pBitmap^.bmiColors[X].rgbGreen;
pPalette^.palPalentry[X].peBlue := pBitmap^.bmiColors[X].rgbBlue;
end ;
hPalette := CreatePalette(pPalette^);
GlobalUnlock(hRes);
GlobalUnlock(hPal);
GlobalFree(hPal);
end ;
end .
– Mark Lussier
Как
записать содержимое окна OpenGL в 'bmp' файл?
Nomadic советует:
Вот что попробовал – вроде получилось:
bt := TBitmap.Create;
bt.Width := gr.Width;
bt.Height := gr.Height;
bt.Canvas.CopyRect(ClientRect, gr.Canvas, gr.ClientRect);
bt.SaveToFile('e:\bt.bmp');
bt.Free;
(gr – объект, в канве которого я рисую с помощью OpenGL)
Как создать disable'ный битмап из обычного (emboss etc)?
Nomadic советует:
CreateMappedBitmap :-)
Один из параметров указатель на COLORMAP, в нем для 16 основных цветов делаешь перекодировку, цвета подберешь сам из принципа:
• все самые яркие → в GetSysColor(COLOR_3DLIGHT);
• самые темные → GetSysColor(COLOR_3DSHADOW);
• нейтральные, которые бyдyт прозрачными → GetSysColor(COLOR_3DFACE);
Так на самом деле вот как делается данная задача:
procedure Tform1.aaa(bmpFrom, bmpTo:Tbitmap);
var
TmpImage,Monobmp:TBitmap;
IRect:TRect;
begin
MonoBmp := TBitmap.Create;
TmpImage:=Tbitmap.Create;
TmpImage.Width := bmpFrom.Width;
TmpImage.Height := bmpFrom.Height;
IRect := Rect(0, 0, bmpFrom.Width, bmpFrom.Height);
TmpImage.Canvas.Brush.Color := clBtnFace;
try
with MonoBmp do begin
Assign(bmpFrom);
Canvas.Brush.Color := clBlack;
if Monochrome then begin
Canvas.Font.Color := clWhite;
Monochrome := False;
Canvas.Brush.Color := clWhite;
end ;
Monochrome := True;
end ;
with TmpImage.Canvas do begin
Brush.Color := clBtnFace;
FillRect(IRect);
Brush.Color := clBlack;
Font.Color := clWhite;
CopyMode := MergePaint;
Draw(IRect.Left + 1, IRect.Top + 1, MonoBmp);