Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

obrazki...


Rekomendowane odpowiedzi

Opublikowano

Witam, zawsze natrafialem na problemy z obrazkami w gui.

Zrobilem gui, nawstawialem kilka obrazkow ($picBk[x])

Teraz chcialem zrobic, aby po kliknieciu w ten obrazek on, i kilka kolejnych sie zmienia...

 

I wiec co teraz...

 

Jesli zrobie $picbk[x] = guictrlcreatepic()..

To nic sie nie zmieni

 

Jesli zrobie guictrlasetdata, rowniez nic sie nie zmieni.

 

Jesli zrobie nowy oobrazek dokladnie na nim, rowniez nic sie nie zmieni.

 

Jesli wywale ta zmienna, bedzie mi pokazywac ze obrazek jest wcisniety, ale nic sie w gui nie zmieni.

 

 

 

Kolejne pytanie, to ustawienie kolejnosci obrazkow.

Jesli chce , aby kod byl przejzysty itd. to chcialbym aby jakos ustawic ktory obrazek jest na samej gorze, ktory jest widoczny.

 

 

Trzecie pytanie, to kolorystyka obrazkow. Czy da sie ja zrobic w autoicie, ze np. Z szarego kwadratu zrobi sie czerwony kwadrat, o 60% czerwieni?

 

Czwarte pytanie, czy jest taka komenda ktora odswieza gui?

 

5. Skad obrazek wie, do ktorego gui ma trafic o.O wczoraj sie nad tym zastanawialem

 

6 sprawa i kolejne beda kiedy wroce na komputer.

Oddajcie minusy! :(

Opublikowano

do zmiany obrazka używałem guictrlsetimage()

2. musisz je w odpowiedniej kolejności powstawiać.

3. tzn. barwienie? raczej nie. Może za pomocą jakiejś biblioteki graficznej

4. nie wiem, nie spotkałem się

5. sam nie wiem czy da się ustawić. Domyślnie leci do ostatnio stworzonego

Opublikowano

do zmiany obrazka używałem guictrlsetimage() // O ile prawidłowo użyłem - nie działa

2. musisz je w odpowiedniej kolejności powstawiać. //Tak, więc jeśli chcę zmienić obrazek w kolejności, musiałoby mi renderować setki obrazków, co by z kolei obciążyło program

3. tzn. barwienie? raczej nie. Może za pomocą jakiejś biblioteki graficznej

4. nie wiem, nie spotkałem się

5. sam nie wiem czy da się ustawić. Domyślnie leci do ostatnio stworzonego

 

Dzięki, chociaż nie wiem czemu nie działa o.O

 

@Edit Zadziałało, w ten sposób

 

fmqx.jpg

 

po kilku godzinach próby...

Teraz zostaje mi zapytać, czy autoit potrafi zrobić

 

7002_P023_2-Pitting_2_web_rdax_95.jpg

ZAMIENIĆ W

bypq.jpg

i inne odcienie...

Oddajcie minusy! :(

Opublikowano

3. Na kolorach się nie znam, ale możesz do koloru który już masz dodać 60% z FF, czyli maksymalnej wartości czerwonego, czyli masz przykładowy kolor 0BC415 i dodajesz 990000 = A4C415. To tylko taki pomysł, na który wpadłem teraz z biegu ;]

4. Możesz wywołać WM_PAINT

http://msdn.microsoft.com/en-us/library/dd145213(v=vs.85).aspx

5. W zwykłym GuiCtrlCreatePic obrazek tworzy się w ostatnio stworzonym GUI, ale już w GDI+ możesz to ustawić.

 

#include <GDIPlus.au3>
$hGUI_01 = guicreate("aaa", 100, 100)
guisetstate()
$hGUI_02 = guicreate("bbb", 100, 100)
guisetstate()

_gdiplus_startup()
$hGraphics_01 = _gdiplus_graphicscreatefromhwnd($hGUI_01)
$hGraphics_02 = _gdiplus_graphicscreatefromhwnd($hGUI_02)

$hImg_01 = _gdiplus_loadimagefromfile("img.bmp")

_gdiplus_graphicsdrawimage($hGraphics_01, $hImg_01, 100, 100)

do
until guigetmsg() = -3

_gdiplus_shutdown()
Pisane z głowy, więc literówki w nazwach funkcji pewnie są.

 

Opublikowano

3. Na kolorach się nie znam, ale możesz do koloru który już masz dodać 60% z FF, czyli maksymalnej wartości czerwonego, czyli masz przykładowy kolor 0BC415 i dodajesz 990000 = A4C415. To tylko taki pomysł, na który wpadłem teraz z biegu ;]

4. Możesz wywołać WM_PAINT

http://msdn.microsoft.com/en-us/library/dd145213(v=vs.85).aspx

5. W zwykłym GuiCtrlCreatePic obrazek tworzy się w ostatnio stworzonym GUI, ale już w GDI+ możesz to ustawić.

 

#include <GDIPlus.au3>
$hGUI_01 = guicreate("aaa", 100, 100)
guisetstate()
$hGUI_02 = guicreate("bbb", 100, 100)
guisetstate()

_gdiplus_startup()
$hGraphics_01 = _gdiplus_graphicscreatefromhwnd($hGUI_01)
$hGraphics_02 = _gdiplus_graphicscreatefromhwnd($hGUI_02)

$hImg_01 = _gdiplus_loadimagefromfile("img.bmp")

_gdiplus_graphicsdrawimage($hGraphics_01, $hImg_01, 100, 100)

do
until guigetmsg() = -3

_gdiplus_shutdown()
Pisane z głowy, więc literówki w nazwach funkcji pewnie są.

 

 

3. mógłbyś mi powiedzieć jak to zrobić?

mam np. kilku-pikselowego jpg... co dalej? :D

 

za pozostałe ślicznie dziękuje :D

Oddajcie minusy! :(

Opublikowano

Kopiujesz go piksel po pikselu za pomocą GetDIBits ( http://msdn.microsoft.com/en-us/library/dd144879 ) i z każdego piksela usuwasz trochę czerwieni i niebieskiego, ponieważ

 

@Hfaua

 

Dodanie zielonego po prostu pokoloruje go na zielono.... Aby zachować odcienie, a zmienić natężenie barw, należy usunąć niechciane kolory ( w tym przypadku czerwień i niebieski ). I nie o stałą, a o % wartości.

Ta sygnatura jest pusta.

Opublikowano

Albo pixel po pixelu, co nie będzie wydajnym rozwiązaniem, albo możesz spróbować nałożyć na bitmapę drugą bitmapę półprzezroczystą żądanego koloru, nie wiem czy tak wyjdzie, ale takie coś mi do głowy wpadło ;]

Opublikowano

moze nalozyc 2 mape ale niech bedzie co 2 piksel zielony a inne przezroczyste taka szachownica,

aggresion dal kiedys skrypt na "kopiowanie obrazka" piksel po pikselu mozesz go odszukac i kopiowac obrazki w innych odcieniach

Do
$wiek+=1
Until ŻycieGetMsg() = -3

zbieram +

Opublikowano

Dobra dzięki, poradziłem sobie jakoś robiąc to w gimpie za pomocą bota... nie było to trudne

 

;anyway kolejne pytanie.

;

;jeśli dla przykładu na całe gui zrobię sobie jeden wielki obraz jako tło i na nim, po kliknięciu ma się zrobić kolejny obrazek i jeszcze kolejne...

;

;

;I teraz pojawia się problem. Obrazek tła jest na wierzchu...

;

;Udało mi się zdziałać tyle, że po kliknięciu tło się przesuwa na 1000x1000 pojawia się obrazek i tło wraca... ale:

;a) to działa wyłącznie na pierwszy obrazek

;b )strasznie 'mruga' gui podczas kliknięcia (pierwszego, bo na kolejne już nie działa)

 

 

@Edit... działa, mój błąd :D

Ale może ktoś ma lepszy sposób, aby zaradzić temu 'mruganiu'?

Oddajcie minusy! :(

Opublikowano

Minimalnie inaczej. set zmienia obrazek, co by znaczyło, że musiałbym zdefiniować 1480 obrazków, co z doświadczenia wiem zamuliłoby skrypt (robiłem 5x1480)

Oddajcie minusy! :(

Opublikowano

Dobra to już będzie ostatnie pytanie.

 

Jak ogarnąć kolejność obrazków?

Zrobiłem schemacik obrazków.

kivn.jpg

 

Tych warstw jest naprawdę wiele! i nie wiem, jak mam to wszystko ogarnąć :/

 

Małe wytłumaczenie:

Gui ma 2 stany. w jednym jest tło z czarnymi obrazkami, a w 2 ma NA TYM TLE I OBRAZKACH pojawić się kolejny obrazek Z KOLEJNYMI obrazkami... :/

P.S. w gwoli ścisłości na STATE B ma nie być czarnego kwadratu, który się pojawia :/

Oddajcie minusy! :(

Opublikowano

To jest kwestia tak zwanego Z-orderingu.

W AutoIcie mało opcji na ten temat...

Możesz spróbować ustawić styl

 

$WS_EX_TOPMOST 0x00000008 Specifies that a window created with this style should be placed above all non-topmost windows and should stay above them, even when the window is deactivated.

Ta sygnatura jest pusta.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...