![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как преобразовать ICO которая находится в потоке в PBitmap? [Delphi, Windows]
BaryVetaL © (2006-01-10 10:21:00)Кто знает как преобразовать ICO которая находится в потоке в PBitmap?
Спасибо!
BaryVetaL (2006-01-11 09:38:00) [1]Все Ok процесс идет ;-)
Но для показа еще не готов (готов но работает не так как хочу я)
Vedun (2006-01-10 22:48:00) [2]Привет BaryVetaL.
Как там твой конвертер VCL->KOL? Как продвигается работа?
Muxaspb (2006-01-10 16:22:00) [3]В предыдущем сообщении лишню var написал.
Muxaspb (2006-01-10 16:20:00) [4]
var
Icon: PIcon;
Bitmap: PBitmap;
Stream: PStream;
...
var
Icon.LoadFromStream(Stream);
Bitmap.Handle:=Icon.Convert2Bitmap(clWhite);
Igi (2006-01-10 13:48:00) [5]Может помогет, писал процедуру недавно чтобы текст в трее показывать...
procedure StringToIcon(symb:string;var Icon:PIcon);
{создание значка с надписью из symb}
Var Rect: TRect;
IcoBmp,ANDmask: PBitmap; {переменные типа BitMap}
IcoInfo : TIconInfo;
begin
try
Icon.Free; {если она существовала - удаляем}
except
end;
Rect.Left := 0;
Rect.Right := 17;
Rect.Top := 0;
Rect.Bottom := 17;
// Создали картинку с текстом. Черный текст на белом фоне.
IcoBmp := NewBitmap(0, 0);
IcoBmp.Height:=16; {новая картинка 32х32}
IcoBmp.Width:=16;
IcoBmp.Canvas.Brush.Color:=clWhite; {будущая маска AND}
IcoBmp.Canvas.FillRect(Rect);
IcoBmp.Canvas.Font.Assign(Form1.Form.Font);
IcoBmp.Canvas.Font.Color := clBlack;
IcoBmp.Canvas.TextOut(1,1,symb); {выводим текст значка}
{создали белую картинку с текстом}
{Теперь нужна анд маска - белые писели это прозрачный фон, а черные - это то что можно показыывать}
ANDMask := NewBitmap(0, 0);
ANDMask.Height:=16;
ANDMask.Width:=16;
ANDMask.Assign(IcoBmp);
ANDMask.Convert2Mask(clWhite);
{обеспечиваем прозрачность полностью черной маской XOR}
Icon := NewIcon;
Icon.Add2AutoFree(Form1.Form);
IcoInfo.fIcon := True; {A value of TRUE specifies an icon}
IcoInfo.xHotspot := 0;
IcoInfo.yHotspot := 0;
IcoInfo.hbmMask := ANDMask.Handle;
IcoInfo.hbmColor := IcoBmp.Handle;
Icon.Handle := CreateIconIndirect(IcoInfo); {создали}
Icon.SaveToFile('C:\ico.ico');
IcoBmp.Free;
ANDMask.Free;
end;
Что-то с маской некорректно работает, но то что требовалось мне я от ней добился
BaryVetaL (2006-01-10 10:26:00) [6]поток естественно PStream :-)