chciałbym standardowego okna informacyjne i ostrzegawcze (błąd) i ikony malowane na indeks karcie z pagecontrol. Jednak wynik wygląda źle, jeśli kolor tła okna nie jest biały.Jak malować standardową ikonę informacji okien ładnie indeksowi JOT pagecontrol za
program Project111;
uses
Vcl.Forms,
Vcl.Controls,
Vcl.Graphics,
Winapi.Windows,
Vcl.ComCtrls,
Vcl.ImgList;
{$R *.res}
var
mainForm: TForm;
imageList: TImageList;
icon: TIcon;
pageControl: TPageControl;
tabSheet: TTabSheet;
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm, mainForm);
imageList := TImageList.Create(mainForm);
imageList.ColorDepth := cd32bit;
icon := TIcon.Create;
try
icon.Handle := LoadImage(0, IDI_INFORMATION, IMAGE_ICON, 16, 16, {LR_DEFAULTSIZE or} LR_SHARED);
imageList.AddIcon(icon);
finally
icon.Free;
end;
pageControl := TPageControl.Create(mainForm);
pageControl.Parent := mainForm;
pageControl.Images := imageList;
tabSheet := TTabSheet.Create(mainForm);
tabSheet.Parent := pageControl;
tabSheet.PageControl := pageControl;
tabSheet.ImageIndex := 0;
Application.Run;
end.
Jak widać białe obramowanie jest rozmyty, myślę, że to z powodu braku odpowiedniej przezroczystości Alpha TImageList ale nie wiem jak to naprawić to.
Rozwiązanie nie trzeba używać TImageList, cieszę się używać innego podejścia. Zauważ, że będą też podpisy, a nie wszystkie indeksy będą miały ikony, a ikony mogą się zmieniać/dodawać/usuwać wraz ze zmianą kontekstu.
używam Delphi XE-2, ja też mam składników DevExpress czy to pomaga.
Spodziewaj się, że jest bardzo powszechne. Charakter tworzenia samych obrazów zakłada, że zostaną użyte na jasnym tle. Problem tkwi w rzeczywistych obrazach. Nie wiele kodu może to naprawić. Poprawka ma zapewnić obraz zoptymalizowany do użycia na ciemnym tle. Albo jeszcze lepiej, spędziliśmy pół roku aktualizując wszystkie przyciski i ikony w naszym oprogramowaniu, aby być czcionką wektorową z tego konkretnego powodu. Teraz możemy kolorować ikony, które chcemy na dowolnym tle. –