maxiu1989 napisał(a)
Większość programów ma piękne małe ikonki.
Bo większość programów ma własne komponenty, które ktoś samodzielnie wyposażył w szerszą obsługę, lub kupił odpowiedni pakiet kontrolek;
Musisz zauważyć, że bitmap'y mają ciekawą cechę, mianowicie kolor piksela w lewym dolnym rogu określa kolor przezroczystości; Sama bitmap'a nie jest typem grafiki posiadającej kanał alfa, więc nie możesz ustawić w żadnym programie koloru przezroczystego, a choćbyś nawet ustawił to i tak po zapisie tło będzie najprawdopodobniej czarne;
Jeżeli korzystasz z gotowej paczki ikon, które posiadają kanał alfa (typ .ico
czy .png
), to podczas rozciągania obrazu powstają niewidoczne różnice w kolorze tła, których później nie widać gołym okiem, ale jak wypełnisz tło kontrastującym kolorem to wszystko widać jak na dłoni; Poparz, to jest duży obrazek oryginalny (z lewej), a z prawiej jego kopia + czarne tło:
Jak widzisz tło dolega prawie idealnie do krawędzi obrazka; A teraz popatrz poniżej, obrazek z oryginału (48x48px
) został pomniejszony do rozmiaru 32x32px
:
jak widać z lewej strony nic się na pierwszy rzut oka nie zmieniło, ale po wypełnieniu tła czarnym kolorem widać, że nie dolega w ogóle do krawędzi obrazka, więc jeśli wrzucisz taką bitmapę do programu, to będzie widać białe piksele (albo jeszcze bardziej dziwne); Jeśli chcesz wykorzystać tak zmniejszone obrazki, musisz ręcznie usunąć te złe piksele wypełniając je kolorem tła, później usuwasz ten kolor lub ustawiasz np. clFuchsia
pamiętając, że piksel w lewym dolnym rogu określa to, jaki kolor będzie pomijany podczas rysowania bitmapy;
Dlaczego tworzą się takie jaja? Bo często (a prawie zawsze) ikony, czy grafiki większe w png posiadają cienie i inne pierdoły, które są półprzezroczyste, a po zmniejszeniu obrazu prawie całkiem w niektórych miejscach zlewają się z kolorem tła i prawie w ogóle ich nie widać; Jednak wypełniając taką grafikę sprawdzasz ile jest tych pikseli i np. gumką je wymazujesz, żeby miały taki sam kolor, jaki ma tło;
Nie miałbyś w ogóle problemów gdybyś sam tworzył grafiki; Musiałbyś jednak pamiętać, żeby nie ustawiać w ogóle kolorów przezroczystości; Ja tworzyłem już wielokrotnie ikonki bazując na gotowych paczkach, ale praktycznie zawsze przed użyciem takiej ikonki sprawdzam, czy wszystko będzie grało podczas rysowania; Jednak ja nie korzystam z bitmap, a z ikon czy png, stąd nie mam żadnych problemów z takimi rzeczami; A jeśli chcę wykorzsytać klasę TBitBtn
to grafiki tworzę ręcznie wykorzystując tryb 256
kolorów; Nie towrzę żadnej przezroczystości, stąd podczas rozciągania zawsze tło idealnie dolega do krawędzi grafiki; Pomyśl nad tym;
I jeszcze jedno:
Kolor piksela w lewym dolnym rogu nie będzie rysowany na całej grafice, a nie tylko jej obwódki, więc należy pamiętać, żeby kolor ten wybrać niepowtarzalny w skali grafiki; Inaczej będziesz miał dziury wewnątrz jej;
Jak nie chcesz w ten sposób to możesz wejść we właściwości obrazu BitBtn1.Glyph.
- masz tam takie pozycje jak:
BitBtn1.Glyph.Transparent
BitBtn1.Glyph.TransparentColor
BitBtn1.Glyph.TransparentMode
co znaczą raczej nie trzeba tłumaczyć, musisz poczytać do czego służą i jak się nimi posługiwać;