Français
Forum

Erledigt: deux Bilderprobleme

 
- page 1 -



Nico
Madysa
allô miteinander!

j'ai mon Programme la fois sur cela Minimum reduziert, chez dem es toujours deux merkwürdige Erscheinungen gibt:
KompilierenMarqueSéparation
 $H Messages.ph

proc Zeige_Kugeln

    declare ly% , gueltig%
    alle Buttons durchgehen

    whileloop 0,9

        ly% = &loop

        whileloop 0,9

            if xor(not(&loop mod 9),not(ly% mod 9)) or (not(&loop) and (ly% = 9))

                Rand deaktivieren
                EnableWindow But&[&loop,ly%],0

            elseif (&loop mod 9) and (ly% mod 9)

                Mittelfeld aufdecken
                ShowWindow(But&[&loop,ly%],0)

            endif

            Die Kullern anzeigen

            if between(&loop,1,8,ly%,1,8)

                SetTimer 0 : waitinput : KillTimer

                if feld%[&loop - 1,ly% - 1]

                    DrawPic PTrue&,&loop * 48,ly% * 48;-1

                endif

            endif

        EndWhile

    EndWhile

    Das gemalte ans Hintergrundbild klatschen
    PLsg& = Create("hPic",0,"&SCRBMP")
    SendMessage(hBack&,~STM_SETIMAGE,0,PLsg&)
    SavePic "D:\Dat1.bmp",PLsg&
    SavePic "D:\Dat2.bmp",SendMessage(hBack&,~STM_GETIMAGE,0,0)
    Zu guter Letzt den deaktivierten Rand wegmachen

    whileloop 0,9

        ly% = &loop

        whileloop 0,9

            case xor(not(&loop mod 9),not(ly% mod 9)) : ShowWindow(But&[&loop,ly%],0)

        EndWhile

    EndWhile

endproc

proc Button

    parameters px% , py%
    Rand: Bilder, Mitte: normal

    ifnot (px% mod 9) and (py% mod 9)

        But&[px%,py%] = Create("PicButton",%hWnd,PTrue&,px% * 48,py% * 48,48,48)

    else

        But&[px%,py%] = Create("Button",%hWnd,"",px% * 48,py% * 48,48,48)

    endif

endproc

proc Button_2

    parameters px% , py%
    nur ein Button am Rande ist kein Bild

    if (px% = 0) and (py% = 9)

        But&[px%,py%] = Create("Button",%hWnd,"",px% * 48,py% * 48,48,48)

    elseif not((px% mod 9) and (py% mod 9))

        But&[px%,py%] = Create("PicButton",%hWnd,PTrue&,px% * 48,py% * 48,48,48)

    else

        But&[px%,py%] = Create("Button",%hWnd,"",px% * 48,py% * 48,48,48)

    endif

endproc

proc Bereite_Bilder

    Hintergrundbild
    PBack& = Create("hNewPic",481,481,$FFFFFF)
    StartPaint PBack&
    UsePen 0,1,0

    whileloop 2,8

        Rectangle (48*&loop-1),0 - (48*&loop+1),480

    EndWhile

    whileloop 2,8

        Rectangle 0,(48*&loop-1) - 480,(48*&loop+1)

    EndWhile

    EndPaint
    Bild für die Kullern
    PTrue& = Create("hNewPic",48,48,$FFFFFF)
    StartPaint PTrue&
    UsePen 0,1,0
    UseBrush 1,0
    Ellipse 2,2,45,45
    EndPaint

endproc

proc BuildUp

    declare y%
    WindowStyle 26
    Window 100,50 - 500,520
    Hintergrund
    hBack& = Create("Bitmap",%hWnd,PBack&,0,0)
    alle Buttons

    whileloop 0,9

        y% = &loop

        whileloop 0,9

            Button(&loop,y%)
            Button_2(&loop,y%)

        EndWhile

    EndWhile

endproc

proc Platziere_Kugeln

    declare rx% , ry%
    clear feld%[]

    whileloop 4

        repeat

            rx% = Rnd(8)
            ry% = Rnd(8)

        until not(feld%[rx%,ry%])

        feld%[rx%,ry%] = 1

    EndWhile

endproc

declare But&[9,9], feld%[7,7]
declare hBack&,PBack&,PLsg& , PTrue&
Randomize
Bereite_Bilder
BuildUp
Platziere_Kugeln
var e% = 0

whilenot e%

    waitinput

    if Clicked(But&[9,9])

        e% = 1

    elseif Clicked(But&[0,9])

        Zeige_Kugeln

    endif

wend

DeleteObject PBack&
DeleteObject PLsg&
DeleteObject PTrue&
end

Es wird folgendes gemacht: trop Beginn volonté dans qui Matrix champ% quatre zufällig gewählte Werte sur 1 gesetzt (mon Murmeln, siehe plus unten ). cela Staticcontrol, cela im Hintergrund liegt, wird de Buttons überdeckt.
Klickt on eh bien sur den Button unten à gauche (avec dem Handle But&[0,9]), so volonté qui Randbuttons deaktiviert et qui mittleren versteckt. avec cela wird qui essenzielle partie qui Hintergrundbitmap sichtbar.
puis volonté quatre Kullern aus champ% hingemalt. cela ganze la fenêtre wird dans einer Bitmap abgesichert et qui Hintergrundbitmap transfert, qui Status quo wird alors fixiert. Zum Schluss volonté qui deaktivierten Randbuttons unsichtbar gemacht, seulement qui Ecken et cela Hintergrundbild verbleiben. (qui untere rechte Button finissez cela Programme.)

Problem 1: Im Kompilat manquer de den quatre Murmeln meist quelques. Im Interpreter volonté stets alle quatre angezeigt. si qui la ligne SetTimer 1 : waitinput : KillTimer (Dulcoif) aktiviert wird, volonté aussi im Kompilat alle Kullern angezeigt. Sleep zeitigt aucun Wirkung. Findet es dans getrennten Schleifen statt, dass qui Buttons entfernt et qui Kreise gemalt volonté, so volonté ebenso alle quatre Kreise angezeigt. Doch pourquoi funktioniert qui obere variante pas? un Zeitproblem peux es pas son, là Sleep rien bringt.

Problem 2: on ersetze den Aufruf Button(&loop,y%) par Button_2(&loop,y%). Dadurch est un einziger qui Randbuttons bildlos, mais un Standard-Button. ca hat den unerklärlichen effet, dass qui Hintergrundbitmap seulement encore aus einer schwarzen Surface et dem Button besteht. Wers pas croyez, peux sich qui Bilder absichern laisser. cela Fensterfoto &SCRBMP ist encore réglé, doch qui Bitmap des Static-Controls ist plus que fraglich. Doch pourquoi?
 
Nico Madysa
15.07.2009  
 



 
- page 1 -



Nico
Madysa
Bitteschön, je hoffe, dass dreiunzwanzig Zeilen pas zuviel sommes.
KompilierenMarqueSéparation
cls 16777215
P& ist das Bild des Buttons
var P& = Create("hNewPic",48,48,$22DD22)
Die Buttons sind h& und g&. Jeder kann ein Text- oder ein Bildbutton sein.
var h& = Create("Button",%hWnd,"Text",0,0,48,48)
var h& = Create("PicButton",%hWnd,p&,0,0,48,48)
var g& = Create("PicButton",%hWnd,p&,48,0,48,48)
var g& = Create("Button",%hWnd,"Text",48,0,48,48)
Der Fensterinhalt wird fotografiert und nach unten versetzt angezeigt.
var Q& = Create("hPic",0,"&SCRBMP")
cls 0 Damit man Bild und Bildschirm unterscheiden kann.
Create("Bitmap",%hWnd,Q&,0,48)
Rest

whilenot IsKey(27)

    waitinput

wend

DeleteObject P&
DeleteObject Q&
end

qui faute tritt sur, sobald aussi seulement un einziger normaler Button sur dem Bildschirm sichtbar ist. sommes deux Picbuttons là, so fonctionne alles normal. si qui Textbutton auparavant versteckt wird, funktioniert également alles wunderbar.
 
Nico Madysa
16.07.2009  
 



Achso maintenant verstehe je Dein Problem, oui c'est "normal".

Windows weiss pas quelle Pixel derrière* einem Contrôle liegen, je hatte la fois avec Frank par-dessus debattiert mais finde den Fil pas plus.

Im Fazit ist scrbmp (naturellement) "unzuverlässig". ^ ^

Ziehe la fois calc.exe sur Dein hWnd et kopiere cela hWnd ab, calc ist avec chez!

DCs sommes nunmal aucun Pixelspeicher.

Vlt. ist ca avec "AERO" maintenant (quelque chose) anders...
 
16.07.2009  
 



Nachtrag: Ähnlich: [...]  .
 
16.07.2009  
 



 
- page 2 -



Nico
Madysa
So ne Doofen Contexte!
bien, ensuite muss je puis dans Zukunft aufpassen. merci joli pour qui schnelle la réponse meiner beiden Fragen.
 
Nico Madysa
16.07.2009  
 



qui sommes pas doof, qui faire cela déjà "richtig".
 
16.07.2009  
 




Nico
Madysa
je vois déjà, daran scheiter sogar qui berühmte Druck-S-Abf-bouton ...
Doch sage la fois, es spricht doch rien vers une Spieleanwendung, quelle zwar pas dans den Hintergrund rückt (HWND_TOPMOST), sich mais minimieren peut, gelle?
 
Nico Madysa
16.07.2009  
 



Komisch ausgedrückt la hâte Du cela garnicht "nötig". prends simple Bitmaps bzw. Picture-Statics et sende cette neue hPic-Handles si vous autre chose montrer devoir. cela Neuzeichnen ist en Problem. ou bien Du zeichnest juste qui ganze surface dans einem hPic et malst cela hPic aufs hWnd.

je serait gern qui devoir comprendre, quoi oui c'est ca solls car volonté?
 
16.07.2009  
 




Nico
Madysa
comment du sicherlich déjà deviner la hâte, un Spiel.
cela Problem ist, dass je aus Trouvé des Designs kurzzeitig sur den deaktivierten Knöpfen selbst herummalen muss. Bisher était cela Problem, dass qui partie des Bildes ensuite beim prochain Neuzeichnen naturellement weg ist, c'est pourquoi qui concept, Knopf avec Bild sur einem Hintergrundstatic trop fixieren. Doch là pouvoir oui plan eh bien &SCRBMP Ärger.
 
Nico Madysa
16.07.2009  
 



>> comment du sicherlich déjà deviner la hâte, un Spiel.

Au oui, suis dabei!

et alles seulement avec cela irgendwas anklickbar ist?

Welchem Spiel kommts am nähesten?
 
16.07.2009  
 




Nico
Madysa
cet Mischung aus Minesweeper et Schiffe Versenken, chez qui du mir bereits avec qui Updatefunktion geholfen la hâte. : [...] 
je habs bisher seulement encore pas angekündigt, weil es dans den Wettbewerb soll, sobald qui schlimmsten Kinderkrankheiten auskuriert sommes.
dans qui bisher hochgeladenen Version gibt es aussi encore pas cela Hintergrundstatic, wodurch cela Gezeichnete verschwindet, sobald quoi par-dessus gleitet.
 
Nico Madysa
16.07.2009  
 



Verstehe, ensuite serait je absolument empfehlen simple sur dem hWnd trop rester um là z.B. un hPic trop zeichnen welches cela komplette Spiel contient.

dans einem 2. hPic zeichnest Du seulement qui klickbaren Bereiche, chacun Bereich simple une autre la couleur. avec einem GetPixel sur cet hPic bekommt on fix raus, sur welchen Bereich (objet) geklickt wurde et sogar avec Karenz si erwünscht.

Nachtrag: Tolles Spiel!
 
16.07.2009  
 




Nico
Madysa
[...] 
je ne sais pas, si je richtig verstehe, quoi du meinst. cela Spiel besteht oui gewissermaßen aus deux Hälften. dans qui ersten sommes seulement Buttons sur dem Spielfeld et on écoutes arrêt. seulement dans qui zweiten Moitié, dans qui Solution, venons ensuite presque alle Buttons weg et cela Bild wird gezeichnet. qui Randbuttons sommes eigentlich seulement dageblieben, weil sonst qui abgefeuerten Laserstrahlen aus dem rien auftauchten. Es sieht so simple toller aus.
 
Nico Madysa
16.07.2009  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

2.216 Views

Untitledvor 0 min.
Langer18.12.2021
H.Brill05.01.2019
AndreasS27.12.2018
E.T.20.12.2018
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie