Glyph w BitButton

0

Witam

Mam mały problem.
Wstawiłem BitButton na formę i ustawiam plik BMP jako Glyph.
Obrazek uprzednio przygotowałem i dałem białe tło, żeby Delphi sam je wymazał i został w przycisku właściwy obrazek.

Jednak bardzo rzadko udaje się że obrazek ładnie wygląda :( Zawsze zostanie jakis biały piksel lub dziwna otoczka.
Co z tym zrobić. Marnuję dużo czasu, żeby to się jakoś prezentowało.

0

Otwórz w paintcie, i wylej na to białe tło jakiś inny kontrastujący kolor, (np. zielony). Zobaczysz te białe otoczki które możesz wymazać gumką. Równie dobrze możesz użyć gimpa, będzie Ci łatwiej.

0

Tyle że tak staram się robić. Ale końcowy efekt takiej edycjki to i tak plik BMP bo bitbutton nie obsluguje innych. A BMP nie obsługuje przezroczystości.
Przy małych ikonkach po prostu nie można zrobić takiej ikonki żeby jakiegoś piksela np. białego nie było widać. Co z tym zrobić ? Mam napisać własny komponent który będzie obslugiwać pliki gif czy png? Jak wstawic obrazek który nie ma tła :(. Większość programów ma piękne małe ikonki.

1

Z tego co mi się wydaje BitButton ma właściwość Transparent. Użyj jej.

2
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:

ImgBig.png

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:

ImgSmall.png

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ć;

0

Teraz elegancko wychodzi. 3min roboty i jest piękna ikonka :)

0

Polecam zaopatrzyć się w program ART Icons, bo w nim właśnie tworzę wszelkie ikonki dla własnych projektów; Minusem jest licencja, ale program nie jest drogi, więc można się nad zakupem zastanowić;

Aplikacja jest niewielka, nie działa najszybciej dla grafik większych niż 300x300px, ale za to bardzo szybko można przygotować zestaw ikon dla programu; Ma kilka ciekawych filtrów, można tworzyć warstwy, obsługuje wiele formatów itd...

Jak dla mnie programik wymarzony, po więcej informacji odsyłam na stronę producenta: www.aha-soft.com/articons/

1 użytkowników online, w tym zalogowanych: 0, gości: 1