Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как преобразовать 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 :-)


Наверх

Титульная страница Поиск, карта сайта Написать письмо