Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.09;
Скачать: CL | DM;

Вниз

Народ подскажите плз, как картинку BMP формата вставить   Найти похожие ветки 

 
Чувачок ©   (2005-09-15 13:34) [0]

в tray использую компоненту CoolTrayIcon. В свойсво Icon можно загрузить только файлы типа ico. А у меня BMP.
Кстати пробовал вставить файл тиа ICO тоже не вставляется .
Что не так делаю свойство IconVisible =true?


 
Чувачок ©   (2005-09-15 14:00) [1]

Вроде дошло как иконку загружать .
А не подскажут ли увадаемые Доны как из формата BMP сделать тип файла ICO?


 
Ega23 ©   (2005-09-15 14:15) [2]

А не подскажут ли увадаемые Доны как из формата BMP сделать тип файла ICO?


PhotoShop?
CorelDraw?
IconWorkShop?


 
ShiFT   (2005-09-15 14:28) [3]

Вам необходимо создать два битмапа, битмап маски (назовём его "AND" bitmap) и битмап изображения (назовём его XOR bitmap). Вы можете пропустить обработчики для "AND" и "XOR" битмапов в Windows API функции CreateIconIndirect() и использовать обработчик возвращённой иконки в Вашем приложении.

procedure TForm1.Button1Click(Sender: TObject);  
var  
 IconSizeX : integer;  
 IconSizeY : integer;  
 AndMask : TBitmap;  
 XOrMask : TBitmap;  
 IconInfo : TIconInfo;  
 Icon : TIcon;  
begin  
{Получаем размер иконки}  
 IconSizeX := GetSystemMetrics(SM_CXICON);  
 IconSizeY := GetSystemMetrics(SM_CYICON);  

{Создаём маску "And"}  
 AndMask := TBitmap.Create;  
 AndMask.Monochrome := true;  
 AndMask.Width := IconSizeX;  
 AndMask.Height := IconSizeY;  

{Рисуем на маске "And"}  
 AndMask.Canvas.Brush.Color := clWhite;  
 AndMask.Canvas.FillRect(Rect(0, 0, IconSizeX, IconSizeY));  
 AndMask.Canvas.Brush.Color := clBlack;  
 AndMask.Canvas.Ellipse(4, 4, IconSizeX - 4, IconSizeY - 4);  

{Рисуем для теста}  
 Form1.Canvas.Draw(IconSizeX * 2, IconSizeY, AndMask);  

{Создаём маску "XOr"}  
 XOrMask := TBitmap.Create;  
 XOrMask.Width := IconSizeX;  
 XOrMask.Height := IconSizeY;  

{Рисуем на маске "XOr"}  
 XOrMask.Canvas.Brush.Color := ClBlack;  
 XOrMask.Canvas.FillRect(Rect(0, 0, IconSizeX, IconSizeY));  
 XOrMask.Canvas.Pen.Color := clRed;  
 XOrMask.Canvas.Brush.Color := clRed;  
 XOrMask.Canvas.Ellipse(4, 4, IconSizeX - 4, IconSizeY - 4);  

{Рисуем в качестве теста}  
 Form1.Canvas.Draw(IconSizeX * 4, IconSizeY, XOrMask);  

{Создаём иконку}  
 Icon := TIcon.Create;  
 IconInfo.fIcon := true;  
 IconInfo.xHotspot := 0;  
 IconInfo.yHotspot := 0;  
 IconInfo.hbmMask := AndMask.Handle;  
 IconInfo.hbmColor := XOrMask.Handle;  
 Icon.Handle := CreateIconIndirect(IconInfo);  

{Уничтожаем временные битмапы}  
 AndMask.Free;  
 XOrMask.Free;  

{Рисуем в качестве теста}  
 Form1.Canvas.Draw(IconSizeX * 6, IconSizeY, Icon);  

{Объявляем иконку в качестве иконки приложения}  
 Application.Icon := Icon;  

{генерируем перерисовку}  
 InvalidateRect(Application.Handle, nil, true);  

{Освобождаем иконку}  
 Icon.Free;  
end;


 
ShiFT   (2005-09-15 14:28) [4]

Способ преобразования изображения размером 32x32 в иконку.

unit main;

interface

uses

 Windows, Messages, SysUtils, Classes, Graphics, Controls,
 Forms, Dialogs, ExtCtrls, StdCtrls;

type

 TForm1 = class(TForm)
   Button1: TButton;
   Image1: TImage;
   Image2: TImage;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var

 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
 winDC, srcdc, destdc: HDC;

 oldBitmap: HBitmap;
 iinfo: TICONINFO;
begin

 GetIconInfo(Image1.Picture.Icon.Handle, iinfo);

 WinDC := getDC(handle);
 srcDC := CreateCompatibleDC(WinDC);
 destDC := CreateCompatibleDC(WinDC);
 oldBitmap := SelectObject(destDC, iinfo.hbmColor);
 oldBitmap := SelectObject(srcDC, iinfo.hbmMask);

 BitBlt(destdc, 0, 0, Image1.picture.icon.width,
   Image1.picture.icon.height,
   srcdc, 0, 0, SRCPAINT);
 Image2.picture.bitmap.handle := SelectObject(destDC, oldBitmap);
 DeleteDC(destDC);
 DeleteDC(srcDC);
 DeleteDC(WinDC);

 image2.Picture.Bitmap.savetofile(ExtractFilePath(Application.ExeName)
   + "myfile.bmp");
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

 image1.picture.icon.loadfromfile("c:\myicon.ico");
end;

end.


 
ShiFT   (2005-09-15 14:30) [5]

Взято из (C)DRKB


 
Чувачок ©   (2005-09-15 15:44) [6]

Огромное спасибо!



Страницы: 1 вся ветка

Текущий архив: 2005.10.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
9-1116736315
CraZarkon
2005-05-22 08:31
2005.10.09
BSP


14-1127307480
Juice
2005-09-21 16:58
2005.10.09
Чего посоветуете для отчетов?


2-1125052372
oradb
2005-08-26 14:32
2005.10.09
Привести TObject к integer


3-1125043936
Виталий Панасенко
2005-08-26 12:12
2005.10.09
Возник. ошибки в дес.-тайме при попытке создать экземпляры полей


14-1126494834
Андрей Николаевич
2005-09-12 07:13
2005.10.09
СисАдмин "вешает лапшу на уши" или я не прав?