Français
Forum

plusieurs Memory-Bitmaps ?

 
- page 1 -



Christian
Eichler
comment toujours hab je un Problem : comment peux je plusieurs (!) Memory-Bitmaps dans Profan² 6.6 erstellen ? avec MCLS peux la fois oui une erstellen, mais pas plusieurs ...
Allerdings voudrais je qui Bilder ensuite pas sur qui Festplatte zwischenspeichern (seulement dass aucun sur qui concept venez, mir trop dire je soll mir SaveBmp et LoadBmp travailler )

mon 1. concept : WinAPI : Befehl (meiner attitude pour qui richtige) trouvé, incorporé, faute.

qui Quellcode :

comme Fehlermeldung venez là ensuite, cela cela Bild test.bmp pas gespeichert volonté konnte .
comment bekomm je dass zum courir, dass je dans Profan (ggf. sur qui WinAPI) plusieurs Memory-Bitmaps erstelle et puis aussi zugreifen peux ?

mfg euer toujours komische Frangen stellender Christian !
 
Debian Lenny, Intel Celeron 2,8 Ghz, 768 MB Ram && Win XP Pro, Intel C2D 1,66Ghz, 2 GB Ram ... PROFAN² 6.6
20.07.2007  
 



 
- page 1 -



Christian
Eichler
640*480 était pas possible, mais Screenshot ist quand même dabei

qui feine ligne number, qui du warscheinlich sans lunettes garnet vois soll den Graph représenter


5 kB
Hochgeladen:20.07.2007
Downloadcounter105
Download
 
Debian Lenny, Intel Celeron 2,8 Ghz, 768 MB Ram && Win XP Pro, Intel C2D 1,66Ghz, 2 GB Ram ... PROFAN² 6.6
20.07.2007  
 



Liegt qui Wertebereich unterhalb eines Longs ou bien Floats?
 
20.07.2007  
 



 
- page 2 -



Nico
Madysa
chez 6000*3000 Pixeln sicherlich
 
Nico Madysa
20.07.2007  
 



Liegt qui Wertebereich unterhalb eines Longs ou bien Floats?
 
20.07.2007  
 




Christian
Eichler
qui Wertebereich de quoi ?

sur dem Bild naturellement im Long ...
chez qui Definitions et Wertemenge des Graphen dans Float ...
Wobei je dire muss, dass je qui Floatwerte seulement umrechne et ensuite direct aufs papier zeichne, alors pas speichere ! je grenier eigentlich gar aucun Werte, wären sowieso trop viele !

Hilft dir cela plus ?
 
Debian Lenny, Intel Celeron 2,8 Ghz, 768 MB Ram && Win XP Pro, Intel C2D 1,66Ghz, 2 GB Ram ... PROFAN² 6.6
21.07.2007  
 




Andreas
Miethe


allô Chistian,

trop Deinem Code :
Début de peinture leitet qui Ausgabe sur un d'autre la fenêtre ou bien Contrôle um, pas sur un DC, peux alors pas marcher.

si Du avec API travailler veux ensuite musst Du cela aussi avec API-Zeichenfunktionen faire, avec den Profan-Zeichenfunktionen peux Du ensuite rien anfangen.

ici un Beispiel, dass un Speicherbitmap anlegt, une ligne number et une Kurve puis zeichnet, et cela Ganze ensuite im Profanfenster anzeigt.
sur cet Art peux Du ensuite aussi plusieurs Speicherbitmaps anlegen et Montrer.
Def @CreateCompatibleBitmap(3) !gdi32.dll,CreateCompatibleBitmap
Def @CreateCompatibleDC(1) !gdi32.dll,CreateCompatibleDC
Def @SelectObject(2) !gdi32.dll,SelectObject
Def @ReleaseDC(2) !user32.dll,ReleaseDC
Def @DeleteDC(1) !gdi32.dll,DeleteDC
Def @BitBlt(9) !gdi32.dll,BitBlt
Def @PolyLineTo(3) !gdi32.dll,PolylineTo
Def @PolyBezierTo(3) !gdi32.dll,PolyBezierTo
Def @LineTo(3) !gdi32.dll,LineTo
Def @MoveToEx(4) !gdi32.dll,MoveToEx
Def @CreatePen(3) !gdi32.dll,CreatePen
Def @FloodFill(4) !gdi32.dll,FloodFill
Def @GetDC(1) !user32.dll,GetDC
Def @ReleaseDC(2) !user32.dll,ReleaseDC
Def @DeleteObject(1) !gdi32.dll,DeleteObject
SetTrueColor 1
CLS
Déclarer dc&,test&,pen&,Points#
Laisser dc&    = @CreateCompatibleDC(%hdc) DeviceContext erzeugen
Laisser test&  = @CreateCompatibleBitmap(%HDC,640,480)hBitmap erzeugen
Laisser pen&   = @CreatePen(0,1,RGB(0,0,255))Pen zum zeichnen erzeugen
@SelectObject(dc&,test&)hBitmap dans DeviceContext
@SelectObject(dc&,pen&)Pen dans DeviceContext
@FloodFill(dc&,0,0,RGB(255,255,255))hBitmap weiss füllen
@MoveToEx(dc&,0,0,0) zum Startpunkt
@LineTo(dc&,Width(%hwnd),Height(%hwnd))ligne number marque
Struktur avec Punkten anlegen ( dans diesem le cas 3 Punkte )
Faible Points#,24
1. Punkt
Long Points#,0 = 0  X
Long Points#,4 = 0  Y
2. Punkt
Long Points#,8 = Width(%hwnd)/2
Long Points#,12 = Height(%hwnd)*2
2. Punkt
Long Points#,16 = Width(%hwnd)
Long Points#,20 = 0
@MoveToEx(dc&,0,0,0)zum Startpunkt
@PolyBezierTo(dc&,Points#,3)Bezier-Kurve aus Punkt-Struktur
@BitBlt(%hdc,0,0,640,480,dc&,0,0,$CC0020)hBitmap sur CLS-la fenêtre Montrer
@BitBlt(%hdc2,0,0,640,480,dc&,0,0,$CC0020)Hbitmap aussi zum Sicherungs-DC
grenier aufräumen
Dispose Points#
@DeleteObject(test&)
@DeleteObject(pen&)
@DeleteDC(dc&)

Tandis que 1

Endwhile

 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
21.07.2007  
 




Christian
Eichler
Okay, merci...
ensuite peux je à cette Stelle oui juste Fragen, quoi es avec cette DCs sur sich hat:

quoi hat es avec cette DCs sur sich ? qu'est-ce que c'est et pourquoi nécessaire on quelque chose comme ?
 
Debian Lenny, Intel Celeron 2,8 Ghz, 768 MB Ram && Win XP Pro, Intel C2D 1,66Ghz, 2 GB Ram ... PROFAN² 6.6
21.07.2007  
 




Andreas
Miethe


allô Christian,

un DC ou bien Devicecontext ist grob dit une Struktur qui grafische Objekte et en Attribute beinhaltet.
Grafische Objekte sommes Bitmap,Brush,Font,Pen et région.
chaque la fenêtre et Contrôle mais aussi un Drucker hat un DC sur cela avec API-Funktionen gezeichnet volonté peux.

CreateCompatibleDC() legt un DC im grenier à, diesem DC peux ensuite avec SelectObject() eines qui o.g. grafischen Objekte zugewiesen volonté.

je hoffe j'ai cela ausreichend erklärt.
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
21.07.2007  
 




Christian
Eichler
Öhm... oui cela sollte langen, merci !
 
Debian Lenny, Intel Celeron 2,8 Ghz, 768 MB Ram && Win XP Pro, Intel C2D 1,66Ghz, 2 GB Ram ... PROFAN² 6.6
21.07.2007  
 




Christian
Eichler
@ Andreas : Dein Code était irgendwie très unübersichtlich, je hab den la fois so umgeschrieben, comment je ihn brauchen peux :
Def @CreateCompatibleBitmap(3) !gdi32.dll,CreateCompatibleBitmap
Def @CreateCompatibleDC(1) !gdi32.dll,CreateCompatibleDC
Def @SelectObject(2) !gdi32.dll,SelectObject
Def @DeleteDC(1) !gdi32.dll,DeleteDC
Def @BitBlt(9) !gdi32.dll,BitBlt
Def @LineTo(3) !gdi32.dll,LineTo
Def @CreatePen(3) !gdi32.dll,CreatePen
Def @FloodFill(4) !gdi32.dll,FloodFill
Def @DeleteObject(1) !gdi32.dll,DeleteObject
Def @MoveToEx(4) !gdi32.dll,MoveToEx
Def @GetPixelA(3) !gdi32.dll,GetPixel

Proc Strich

    Paramètres DCHandle&, StrichX1&, StrichY1&, StrichX2&, StrichY2&, StrichFarbe&
    Déclarer Stift&
    Laisser Stift&=@CreatePen(0,1,StrichFarbe&)
    @SelectObject(DCHandle&,Stift&)
    @MoveToEx(DCHandle&,StrichX1&,StrichY1&,0)
    @LineTo(DCHandle&,StrichX2&,StrichY2&)
    @DeleteObject(Stift&)

ENDPROC

Proc SpeicherBitmap

    Paramètres XBreite&, YBreite&
    Déclarer DC&, hBitMap&
    Laisser DC&=@CreateCompatibleDC(%hdc)
    Laisser hBitMap&=@CreateCompatibleBitmap(%hdc,XBreite&,YBreite&)
    @SelectObject(DC&,hBitMap&)
    @FloodFill(DC&,0,0,RGB(255,255,255))
    return DC&

ENDPROC

Proc LadeSpeicherBitmapX

    Paramètres DCHandle&
    @BitBlt(%hdc,0,0,640,480,DCHandle&,0,0,$CC0020)
    @BitBlt(%hdc2,0,0,640,480,DCHandle&,0,0,$CC0020)

ENDPROC

Proc LadeSpeicherBitmap

    Paramètres DCHandle&, XBreite&, YBreite&
    Déclarer m%, n%

    Tandis que m% < XBreite&

        Inc m%

        Tandis que n% < YBreite&

            Inc n%

            Si non @GetPixelA(DCHandle&,m%,n%)=@RGB(255,255,255)

                @BitBlt(%hdc,m%,n%,1,1,DCHandle&,m%,n%,$CC0020)
                @BitBlt(%hdc2,m%,n%,1,1,DCHandle&,m%,n%,$CC0020)

            EndIf

        Endwhile

        Laisser n%=0

    Endwhile

ENDPROC

Proc ZerstohreSpeicherBitmap

    Paramètres DCHandle&
    @DeleteDC(DCHandle&)

ENDPROC

SetTrueColor 1
CLS @RGB(150,150,150)
Déclarer SBit1&
SpeicherBitmap 640,480
Laisser SBit1&=@&(0)
Strich SBit1&,0,0,100,50,@RGB(0,0,255)
Strich SBit1&,100,50,200,100,@RGB(0,255,0)
Strich SBit1&,200,100,300,150,@RGB(255,0,0)
Strich SBit1&,300,150,400,200,@RGB(0,0,255)
Strich SBit1&,400,200,500,250,@RGB(0,255,0)
Strich SBit1&,500,250,600,300,@RGB(255,0,0)
LadeSpeicherBitmap SBit1&,640,480
WaitInput
ZerstohreSpeicherBitmap SBit1&

seulement comment je une einzelne la couleur durchsichtig bekomme, là suis je mir encore pas 100%-ig sûrement. Im Beispiel dessus ist zwar une Solution, mais qui mais est très lente !
et pour den letzten paramètre dans BitBlt hab je aussi rien passendes trouvé !

mfg Christian

PS: je hab sogar selber encore une API-Funktion avec reingemurkst !!!
 
Debian Lenny, Intel Celeron 2,8 Ghz, 768 MB Ram && Win XP Pro, Intel C2D 1,66Ghz, 2 GB Ram ... PROFAN² 6.6
21.07.2007  
 




Andreas
Miethe


allô Christian

j'ai Dein Beispiel la fois angepasst.
c'est maintenant une neue Procedur drin nommé Drawtransparent

Sieht wild aus, ist mais hoffentlich ausreichend kommentiert.

Im Grunde pouvoir qui Procedur Dein Speicherbitmap simple seulement durchsichtig et zeichnet es sur %HDC.

cela allez allerdings wesentlich plus rapide comme Votre Procedur, là alles sur einmal angezeigt wird.
Def @CreateCompatibleBitmap(3) !gdi32.dll,CreateCompatibleBitmap
Def @CreateCompatibleDC(1) !gdi32.dll,CreateCompatibleDC
Def @SelectObject(2) !gdi32.dll,SelectObject
Def @DeleteDC(1) !gdi32.dll,DeleteDC
Def @BitBlt(9) !gdi32.dll,BitBlt
Def @LineTo(3) !gdi32.dll,LineTo
Def @CreatePen(3) !gdi32.dll,CreatePen
Def @FloodFill(4) !gdi32.dll,FloodFill
Def @DeleteObject(1) !gdi32.dll,DeleteObject
Def @MoveToEx(4) !gdi32.dll,MoveToEx
Def @GetPixelA(3) !gdi32.dll,GetPixel
Def GetCurrentObject(2) ! gdi32,GetCurrentObject
Def SetBkColor(2) ! gdi32,SetBkColor
Def CreateBitmap(5) ! gdi32,CreateBitmap
DEF SetMapMode(2) ! GDI32,SetMapMode
DEF GetMapMode(1) ! GDI32,GetMapMode

Proc Strich

    Paramètres DCHandle&, StrichX1&, StrichY1&, StrichX2&, StrichY2&, StrichFarbe&
    Déclarer Stift&
    Laisser Stift&=@CreatePen(0,1,StrichFarbe&)
    @SelectObject(DCHandle&,Stift&)
    @MoveToEx(DCHandle&,StrichX1&,StrichY1&,0)
    @LineTo(DCHandle&,StrichX2&,StrichY2&)
    @DeleteObject(Stift&)

ENDPROC

Proc SpeicherBitmap

    Paramètres XBreite&, YBreite&
    Déclarer DC&, hBitMap&
    Laisser DC&=@CreateCompatibleDC(%hdc)
    Laisser hBitMap&=@CreateCompatibleBitmap(%hdc,XBreite&,YBreite&)
    @SelectObject(DC&,hBitMap&)
    @FloodFill(DC&,0,0,RGB(255,255,255))
    return DC&

ENDPROC

Proc LadeSpeicherBitmapX

    Paramètres DCHandle&
    @BitBlt(%hdc,0,0,640,480,DCHandle&,0,0,$CC0020)
    @BitBlt(%hdc2,0,0,640,480,DCHandle&,0,0,$CC0020)

ENDPROC

Proc LadeSpeicherBitmap

    Paramètres DCHandle&, XBreite&, YBreite&
    Déclarer m%, n%

    Tandis que m% < XBreite&

        Inc m%

        Tandis que n% < YBreite&

            Inc n%

            Si non @GetPixelA(DCHandle&,m%,n%)=@RGB(255,255,255)

                @BitBlt(%hdc,m%,n%,1,1,DCHandle&,m%,n%,$CC0020)
                @BitBlt(%hdc2,m%,n%,1,1,DCHandle&,m%,n%,$CC0020)

            EndIf

        Endwhile

        Laisser n%=0

    Endwhile

ENDPROC

Proc ZerstohreSpeicherBitmap

    Paramètres DCHandle&
    @DeleteDC(DCHandle&)

ENDPROC

NEW !

Proc DrawTransparent

    Paramètres inDC&,w&,h&,transcolor&
    Déclarer hhBitmap&,BitmapHandle&
    Déclarer HdcTemp&,HdcBack&,HdcObject&,HdcMem&,hdcSave&
    Déclarer BmpAndBack&,BmpAndObject&,BmpAndMem&,BmpSave&
    Déclarer BmpBackOld&,BmpObjectOld&,BmpMemOld&,BmpSaveOld&
    Déclarer CColor&
    temporaerDC anlegen
    Laisser HdcTemp& = CreateCompatibleDC(%hdc)
    Laisser hhBitMap&=@CreateCompatibleBitmap(%hdc,w&,h&)
    SelectObject(HdcTemp&,hhBitMap&)
    BitBlt(HdcTemp&,0,0,w&,h&,inDC&,0,0,$0CC0020)
    un paire grenier-DCs anlegen
    Laisser HdcBack&   = CreateCompatibleDC(%hdc)
    Laisser HdcObject& = CreateCompatibleDC(%hdc)
    Laisser HdcMem&    = CreateCompatibleDC(%hdc)
    Laisser HdcSave&   = CreateCompatibleDC(%hdc)
    Bitmaps anlegen
    monochrom DC
    Laisser BmPAndBack&   = CreateBitmap(w&,h&,1,1,0)
    Laisser BmPAndObject& = CreateBitmap(w&,h&,1,1,0)
    la couleur
    Laisser BmPAndMem&    = CreateCompatibleBitmap(%hdc,w&,h&)
    Laisser BmPSave&      = CreateCompatibleBitmap(%hdc,w&,h&)
    SetMapMode(HdcTemp&,GetMapMode(%hdc))
    chaque grenier-DC muss un Bitmap selektieren zum Sauver qui données
    Laisser BmpBackOld&   = SelectObject(HdcBack&,BmPAndBack&)
    Laisser BmpObjectOld& = SelectObject(HdcObject&,BmpAndObject&)
    Laisser BmpMemOld&    = SelectObject(HdcMem&,BmpAndMem&)
    Laisser BmpSaveOld&   = SelectObject(HdcSave&,BmpSave&)
    Bitmaps sichern weil es ueberschrieben wird
    BitBlt (HdcSave&,0,0,w&,h&,HdcTemp&,0,0,$0CC0020)
    Transparenz-la couleur pour temporaerDC mettons
    Laisser CColor& = SetBkColor(HdcTemp&,TransColor&)
    une Object-masque anlegen pour cela Bitmaps anlegen
    de QuellBitmap dans Monochrom-Bitmap
    BitBlt(HdcObject&,0,0,w&,h&,HdcTemp&,0,0,$0CC0020)
    Hintergrundfarbe pour temoraerDC ist weiss
    SetBkColor(HdcTemp&,rgb(255,255,255))
    Object-masque invertieren
    BitBlt(HdcBack&,0,0,w&,h&,HdcObject&,0,0,$0330008)
    HDC-Hintergrund ins MemoryDC kopieren
    BitBlt(HdcMem&,0,0,w&,h&,%hdc,0,0,$0CC0020)
    Bereich maskieren dans dem cela Bitmaps erscheint
    BitBlt(HdcMem&,0,0,w&,h&,HdcObject&,0,0,$08800C6)
    transparenten Bereich maskieren
    BitBlt(HdcTemp&,0,0,w&,h&,HdcBack&,0,0,$08800C6)
    XOR Bitmap avec Hintergrund HDC
    BitBlt(HdcMem&,0,0,w&,h&,HdcTemp&,0,0,$0EE0086)
    transparentes Bitmap dans HDC kopieren
    BitBlt(%hdc,0,0,w&,h&,HdcMem&,0,0,$0CC0020)
    et ins grenier-HDC kopieren
    BitBlt(%hdc2,0,0,w&,h&,HdcMem&,0,0,$0CC0020)
    grenier-Bitmaps freigeben
    DeleteObject(SelectObject(HdcBack&,BmpBackOld&))
    DeleteObject(SelectObject(HdcObject&,BmpObjectOld&))
    DeleteObject(SelectObject(HdcMem&,BmpMemOld&))
    DeleteObject(SelectObject(HdcSave&,BmpSaveOld&))
    DeleteObject(SelectObject(HdcTemp&,hhBitmap&))
    grenier-Dcs freigeben
    DeleteDC(HdcMem&)
    DeleteDC(HdcBack&)
    DeleteDC(HdcObject&)
    DeleteDC(HdcSave&)
    DeleteDC(HdcTemp&)

ENDPROC

SetTrueColor 1
CLS @RGB(150,150,150)
Déclarer SBit1&,haDC&
LoadBmp $syspath+\setup.bmp,0,0;0  Hintergrundbild zum Testn ( Pfad anpassen !! )
SpeicherBitmap 640,480
Laisser SBit1&=@&(0)
Strich SBit1&,0,0,100,50,@RGB(0,0,255)
Strich SBit1&,100,50,200,100,@RGB(0,255,0)
Strich SBit1&,200,100,300,150,@RGB(255,0,0)
Strich SBit1&,300,150,400,200,@RGB(0,0,255)
Strich SBit1&,400,200,500,250,@RGB(0,255,0)
Strich SBit1&,500,250,600,300,@RGB(255,0,0)
DrawTransparent SBit1&,640,480,RGB(255,255,255)
WaitInput
ZerstohreSpeicherBitmap SBit1&
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
21.07.2007  
 




Christian
Eichler
merci, je hatte cela Problem, dass mon Procédure droite lente était ...
je hab mais arrêt rien besseres trouvé ...

merci pour qui Aider avec qui WinAPI !

mfg Christian
 
Debian Lenny, Intel Celeron 2,8 Ghz, 768 MB Ram && Win XP Pro, Intel C2D 1,66Ghz, 2 GB Ram ... PROFAN² 6.6
21.07.2007  
 




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

1.178 Views

Untitledvor 0 min.
H.Brill18.09.2023
Walter11.04.2023
Ernst18.04.2014
iF08.05.2013
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