Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Вниз

Как из битмапа создать HICON ?   Найти похожие ветки 

 
Tahion2   (2004-07-02 16:25) [0]

Как из битмапа создать HICON ?


 
Tahion2   (2004-07-02 16:49) [1]

Если можно, то приведите пример кода


 
TUser ©   (2004-07-02 16:53) [2]

Никак. Можно TIcon, вот пример с DelphiWorld"а

procedure TForm1.Button1Click(Sender: TObject);
var
 IconSizeX: integer;
 IconSizeY: integer;
 AndMask: TBitmap;
 XOrMask: TBitmap;
 IconInfo: TIconInfo;
 Icon: TIcon;
begin
 {Get the icon size}
 IconSizeX := GetSystemMetrics(SM_CXICON);
 IconSizeY := GetSystemMetrics(SM_CYICON);
 {Create the "And" mask}
 AndMask := TBitmap.Create;
 AndMask.Monochrome := true;
 AndMask.Width := IconSizeX;
 AndMask.Height := IconSizeY;
 {Draw on the "And" mask}
 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);
 {Draw as a test}
 Form1.Canvas.Draw(IconSizeX * 2, IconSizeY, AndMask);
 {Create the "XOr" mask}
 XOrMask := TBitmap.Create;
 XOrMask.Width := IconSizeX;
 XOrMask.Height := IconSizeY;
 {Draw on the "XOr" mask}
 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);
 {Draw as a test}
 Form1.Canvas.Draw(IconSizeX * 4, IconSizeY, XOrMask);
 {Create a icon}
 Icon := TIcon.Create;
 IconInfo.fIcon := true;
 IconInfo.xHotspot := 0;
 IconInfo.yHotspot := 0;
 IconInfo.hbmMask := AndMask.Handle;
 IconInfo.hbmColor := XOrMask.Handle;
 Icon.Handle := CreateIconIndirect(IconInfo);
 {Destroy the temporary bitmaps}
 AndMask.Free;
 XOrMask.Free;
 {Draw as a test}
 Form1.Canvas.Draw(IconSizeX * 6, IconSizeY, Icon);
 {Assign the application icon}
 Application.Icon := Icon;
 {Force a repaint}
 InvalidateRect(Application.Handle, nil, true);
 {Free the icon}
 Icon.Free;
end;


 
GuAV ©   (2004-07-02 17:00) [3]


> Никак

Да ну? CreateIconIndirect


 
TUser ©   (2004-07-02 17:04) [4]

Так он вернет хэндел того, что создано из битмапа. А сам хэндел из битмапа не создается, так что "Никак" было сказано правильно.


 
grom   (2004-07-02 17:09) [5]

procedure TForm1.ShowIcon(Id:Integer;Icon,Hint:string);
var
ics:TIcon;
ims,img:TImage;
iml:TImageList;
begin
ics:=TIcon.Create;
ims:=TImage.Create(Form1);
img:=TImage.Create(Form1);
iml:=TImageList.CreateSize(16,16);

ims.Picture.LoadFromFile(1.bmp);

 ImL.Clear;
 ImL.AddMasked(Ims.Picture.Bitmap,clWhite);
 ImL.GetIcon(0,Ics);
Ics.Handle =иконка хандле
img.Free;
ics.Free;
ims.Free;
iml.Free;
end;
приме


 
grom   (2004-07-02 17:11) [6]

здесь много лишнего. надо удалить


 
GuAV ©   (2004-07-02 17:35) [7]


> Так он вернет хэндел того, что создано из битмапа. А сам
> хэндел из битмапа не создается

IMHO, пора уже отождествлять хендел и объект. В дельфи же TButton - это тоже на самом деле не кнопка, а указатель на кнопку :-)


 
Fay ©   (2004-07-02 17:44) [8]

2GuAV ©   (02.07.04 17:35) [7]

> В дельфи же TButton - это тоже на самом деле не кнопка,
> а указатель на кнопку :-)


А вот и фигушки! Это класс.


 
GuAV ©   (2004-07-02 18:12) [9]


>  Это класс.

Это экземпляр класса, по сути указатель.


 
TUser ©   (2004-07-02 18:32) [10]


> Это экземпляр класса

Все-таки TButton - это класс.


 
GuAV ©   (2004-07-03 00:12) [11]


> Все-таки TButton - это класс.

Да согласен был не прав. TButton и TUser - классы :)



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

Форум: "Основная";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.024 c
14-1088489953
Nikolay M.
2004-06-29 10:19
2004.07.18
Работа IT-шника в софтовой компаниий vs работа на бизнес - ?


14-1088137119
CacheMeM
2004-06-25 08:18
2004.07.18
Исходники на Турбо Паскаль


1-1089196233
CyBeR
2004-07-07 14:30
2004.07.18
Не будет ли это коряво???


14-1088426606
Sodom
2004-06-28 16:43
2004.07.18
Доменная авторизация. Создание своего модуля к apache.


3-1088083691
Wolfram
2004-06-24 17:28
2004.07.18
Переход с Paradox-а





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский