Crearea bmp ICO cu fundal transparent

Crearea ICO de la BMP cu un fundal transparent

Bine ai venit!
Spune-mi, te rog, este posibil în Delphi pentru a crea un fișier ICO dintr-un BMP-fișier cu un fundal transparent? ICO de la BMP am făcut, dar pentru a stabili un fundal transparent în pictograma nu funcționează, și anume Trebuie să aibă un fundal transparent, a fost „cusut“ în fișierul ICO.

Poate fi adecvat Image Editor

In-in! Eu, de asemenea, nu pot face acest lucru. Cine este responsabil (mod simplu) - el este doar un erou în ochii mei. -)

software-ul este posibil acest lucru
Procedura TForm1.Button1Click (Expeditor: TObject);
var
iml: TImageList;
începe
iml: = TImageList.CreateSize (32,32);
Iml.AddMasked (Image1.Picture.Bitmap, clWhite);
Iml.GetIcon (0, Image2.Picture.Icon);
Image2.Picture.SaveToFile ( "1.ico");
iml.Free;
se încheie;

Nu există roți. Ea nu a însemnat. Aici, de exemplu, încărcați o imagine aveți în TImage, de exemplu, o mașină pe un fundal negru. Ea vrea să elimine fundalul și a salva BMP „shku ca icon Acest lucru înseamnă că, dacă, să zicem, Image1 este această imagine, apoi în provocarea Image1.Picture.Bitmap.SaveToFile. (“ D: \ icon.ico „) fişierele sunt salvate în pictograma fără fond și fără pierderi de calitate a culorii. fata, această pictogramă este stocată fără pierderi de calitate, dar fondul rămâne, și este necesar pentru a scăpa de ea.

Olga, nu mă înțelege greșit, voi lua întrebarea dvs. pe un alt forum. Nu vânătoare rescrie toate propriile cuvinte - doar copia, OK?

și ce punctul culminant?
în Iml.AddMasked (Image1.Picture.Bitmap, clWhite); # XA0;?
ca fig! ca fundal era roz, și așa a fost!

și, plus la faptul că jură dimensiunea imaginii este nevalidă

Asta este! Context-rămâne opac. și eroarea nu a sari la mine.

Mă voi corecta: fundalul este opac, chiar dacă scrie: Iml.AddMasked (Image1.Picture.Bitmap, clRohovy \ albastru \ sau gri-maro-purpuriu); # XA0;

Există chiar și un 2 soluții

Nu înțeleg, n-ai păstrat?

Nu există roți. Ea nu a însemnat. Aici, de exemplu, încărcați o imagine aveți în TImage, de exemplu, o mașină pe un fundal negru. Ea vrea să elimine fundalul și a salva BMP „shku ca icon Acest lucru înseamnă că, dacă, să zicem, Image1 este această imagine, apoi în provocarea Image1.Picture.Bitmap.SaveToFile. (“ D: \ icon.ico „) fişierele sunt salvate în pictograma fără fond și fără pierderi de calitate a culorii. fata, această pictogramă este stocată fără pierderi de calitate, dar fondul rămâne, și este necesar pentru a scăpa de ea.

De fapt, e amuzant și tu nu înțeleg ceea ce faci.

salvează un fișier BMP cu o extensie de ICO. Aceasta nu este o pictogramă adevărată! Doar Windows este capabil să citească bitmap și să le prezinte ca o pictogramă. Dar este necesar pentru a deschide fișierul folosind Irfan View, de exemplu, programul va spune că este de fapt BMP, în loc de ICO. Procedând astfel încât să nu va primi un icoane plin.

Apropo, Win 98 accept culoarea albă a transparente în acest caz, și anume, este posibil să se creeze o pictogramă transparentă. Dar nu fi așa.

Am citit discuția anterioară cu privire la acest subiect
Puteți, kokretno specifica care două soluții sunt acolo?
incearca sa se refaca sub Borland primerchik - Nu înțeleg cum să pună în aplicare fișierul ICO deja existent? bine, sau mai bine să spun TImage existente sau tBitmap (da, așa cum vă place!), mai degrabă decât de mână-trase cerc roșu! ca în bitmap set de fundal alb-negru?

Și am un exemplu (Grom (01.09.04 13:54) [3]) funcționează bine.
Doar în schimb trebuie să scrie clWhite culoarea pe care doriți să facă transparente.
Pictograma stocate este destul de bună calitate, cu fundal prozranym.
Videmo care trece prin ImageList Bitmap mod imagine kakimto acolo de conversie.
== Care sunt opiniile tale ==


> Poate, kokretno specifica care două soluții sunt acolo?


> Încercarea de a se reface sub Borland primerchik - Nu înțeleg cum să pună în aplicare fișierul ICO deja existent? bine, sau mai bine să spun TImage existente sau tBitmap (da, așa cum vă place!), mai degrabă decât de mână-trase cerc roșu!

Cum să pună în aplicare TBitmap? # XA0; în schimb:


# XA0; AndMask. TBitmap;
# XA0; XOrMask. TBitmap;

utilizați bitmap-uri dumneavoastră.

Ce vrei să spui de fundal? Doriți să creați un TBitmap alb sau negru? Crearea și utilizarea FillRect.

Ah-ah-ah-ah-ah-ah. Nu te înțeleg, nu mă înțeleg. Nu te voi întreba nimic despre pictogramele care nici nu te confunda, și nu să te confunde.
Me aceste icoane izeli luni de viață. (


> Ah-ah-ah-ah-ah-ah. Nu te înțeleg, nu mă înțeleg. eu
va> nu vă mai întrebați nimic despre pictogramele care
> Sau te confunda, și nu să te confunde.
> Am aceste icoane izeli luni de viață. (

Nu, încă mai dau seama. Oprire la această etapă și nu progresează oriunde pe până când nu se poate spune despre ce e vorba.

Apropo, pentru link-ul, foarte LOL. A se vedea, ei scriu:


Procedura DrawTransparentBmp (CNV: TCanvas; x, y: Integer; bmp: TBitmap; clTransparent: TColor);

Aceasta se numește unt-ulei. Avem TBitmap proprietate transparentă și metoda Draw, care este pus în aplicare aici, direct în același mod ca și procedura.

Și, în plus, nu am fost interesat de afișarea imagine transparentă (a face mai ușor, așa cum am spus, cu proprietatea transparentă), am nevoie de transparență a fost cusut în fișierul de imagine, astfel încât imaginea de fundal a fost în sine transparentă, și nu uita transparent!

Bine, acum încerc să aplice sfaturi Grom, Rem (din nou!) Și Mihey_temporary

Procedura TForm1.Button1Click (Expeditor: TObject);
var
newIcon. Ticon;
ImageList. tImageList;
PMBH. THandle;
BkCol. TColor;
începe
// Definiți o imagine de culoare de fundal
PMBH: = bmpImage.Picture.Bitmap.Canvas.Handle;
BkCol: = GetPixel (PMBH, 0, 0);

// Am înfipt Bitmap în Imagelist
ImageList: = tImageList.Create (auto);
ImageList.AddMasked (bmpImage.Picture.Bitmap, BkCol);

// Noi trecerea Bitmap la Icon
newIcon: = tIcon.Create;
ImageList.GetIcon (0, newIcon);

// Salvați pictograma fișierului rezultat
newIcon.SaveToFile (icoFileName);

> Există pictograme o structură mai complexă. Acestea pot conține câteva desene. Eu nu le-am înțeles.

În plus, pe 32 de biți nu este acceptată. Deci, nu este o opțiune.

Sluhay să-mi spui, în general, ce vrei să faci ceva pentru icoane care tortură? Oh, și ți-ai dat un fundal transparent sau întrebarea de ce încă mai deschide ceva?

În cazul în care judecătorul de Visual Basic, adică, soluții gata făcute la www.vbaccelerator.com

Trebuie să creați două bitmap-uri, masca bitmap (să-l numim „și“ bitmap) și imagine bitmap (să-l numim XOR bitmap). Puteți sări peste stivuitoare pentru „și“ și „XOR“ # XA0; bitmap-uri în Windows API CreateIconIndirect () funcția și utilizarea de tratare a returnat de pictograme în aplicația dumneavoastră.

Procedura TForm1.Button1Click (Expeditor: TObject);
var
# XA0; IconSizeX. întreg;
# XA0; IconSizeY. întreg;
# XA0; AndMask. TBitmap;
# XA0; XOrMask. TBitmap;
# XA0; IconInfo. TIconInfo;
# XA0; pictograma. Ticon;
începe

# XA0; IconSizeX: = GetSystemMetrics (SM_CXICON);
# XA0; IconSizeY: = GetSystemMetrics (SM_CYICON);


# XA0; AndMask: = TBitmap.Create;
# XA0; AndMask.Monochrome: = true;
# XA0; AndMask.Width: = IconSizeX;
# XA0; AndMask.Height: = IconSizeY;


# XA0; AndMask.Canvas.Brush.Color: = clWhite;
# XA0; AndMask.Canvas.FillRect (Rect (0, 0, IconSizeX, IconSizeY));
# XA0; AndMask.Canvas.Brush.Color: = clBlack;
# XA0; AndMask.Canvas.Ellipse (4, 4, IconSizeX - 4, IconSizeY - 4);


# XA0; Form1.Canvas.Draw (IconSizeX * 2, IconSizeY, AndMask);


# XA0; XOrMask: = TBitmap.Create;
# XA0; XOrMask.Width: = IconSizeX;
# XA0; XOrMask.Height: = IconSizeY;


# XA0; XOrMask.Canvas.Brush.Color: = ClBlack;
# XA0; XOrMask.Canvas.FillRect (Rect (0, 0, IconSizeX, IconSizeY));
# XA0; XOrMask.Canvas.Pen.Color: = clRed;
# XA0; XOrMask.Canvas.Brush.Color: = clRed;
# XA0; XOrMask.Canvas.Ellipse (4, 4, IconSizeX - 4, IconSizeY - 4);


# XA0; Form1.Canvas.Draw (IconSizeX * 4, IconSizeY, XOrMask);


# XA0; pictograma: = TIcon.Create;
# XA0; IconInfo.fIcon: = true;
# XA0; IconInfo.xHotspot: = 0;
# XA0; IconInfo.yHotspot: = 0;
# XA0; IconInfo.hbmMask: = AndMask.Handle;
# XA0; IconInfo.hbmColor: = XOrMask.Handle;
# XA0; Icon.Handle: = CreateIconIndirect (IconInfo);


# XA0; Form1.Canvas.Draw (IconSizeX * 6, IconSizeY, Icon);


# XA0; InvalidateRect (Application.Handle, zero, adevărat);

2 Fish
Vă mulțumim pentru „repetarea. - mama învățării“

P.S. Și de ce am venit cu ideea de a scrie un program pentru a extrage și de a salva pictograma. -)

Bine, trunchiate. Ever finalizat încă citit de la EXE și DLL, dar nu este de până la pictogramele.