Español
Foro

Mehrere Memory-Bitmaps ?

 
- Página 1 -



Christian
Eichler
Como siempre tener Yo una Problema : ¿Cómo se puede Yo mehrere (!) Memory-Bitmaps en Profano² 6.6 redactar ? Mit MCLS kann veces sí eins redactar, pero no mehrere ...
Aunque möchte Yo el Bilder entonces no en el Festplatte zwischenspeichern (sólo dass keiner en el Concepto kommt, me a sagen Yo se me SaveBmp y LoadBmp trabajo )

Mi 1. Concepto : WinAPI : Befehl (meiner Meinung después de el richtige) gefunden, Eingebaut, Fehler.

Der Quellcode :

Als Fehlermeldung kommt como entonces, el el Bild test.bmp no gespeichert voluntad podría .
Como bekomm Yo dass para laufen, dass Yo en Profano (ggf. en WinAPI) mehrere Memory-Bitmaps erstelle y darauf auch zugreifen kann ?

mfg euer siempre 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  
 



 
- Página 1 -



Christian
Eichler
640*480 war no posible, aber Screenshot es trotzdem esta

El feine Linie, el du warscheinlich sin Brille garnet siehst se el Graph darstellen


5 kB
Hochgeladen:20.07.2007
Ladeanzahl104
Descargar
 
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 el Wertebereich unterhalb uno Longs oder Floats?
 
20.07.2007  
 



 
- Página 2 -



Nico
Madysa
En 6000*3000 Pixeln sicherlich
 
Nico Madysa
20.07.2007  
 



Liegt el Wertebereich unterhalb uno Longs oder Floats?
 
20.07.2007  
 




Christian
Eichler
Der Wertebereich de qué ?

Auf el Bild natürlich en el Largo ...
En Definitions y Wertemenge des Graphen en Float ...
Wobei Yo sagen muss, dass Yo el Floatwerte sólo umrechne y luego direkt aufs Papier zeichne, also no speichere ! Yo speicher eigentlich gar no Werte, wären sowieso a viele !

Hilft dir el más ?
 
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


¡Hola Chistian,

a Deinem Code :
StartPaint leitet el Edición en una más Ventana oder Control en, no en una DC, kann also no trabajo.

Si usted con API trabajo willst entonces musst Usted el auch con API-Zeichenfunktionen hacer, con el Profano-Zeichenfunktionen kannst Usted entonces nichts anfangen.

Hier una Ejemplo, que un Speicherbitmap anlegt, una Linie y una Kurve darauf características, y el Ganze entonces en el Profanfenster anzeigt.
Auf esta Art kannst Usted entonces auch mehrere Speicherbitmaps invertir y Mostrar.
Def @CreateCompatibleBitmap(3) !gdi32.dll,CreateCompatibleBitmap
Def @CreateCompatibleDC(1) !gdi32.dll,CreateCompatibleDC
Def @Seleccionar objeto(2) !gdi32.dll,Seleccionar objeto
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
Declarar dc&,test&,pen&,Points#
Let dc&    = @CreateCompatibleDC(%hdc) DeviceContext erzeugen
Let test&  = @CreateCompatibleBitmap(%HDC,640,480)hBitmap erzeugen
Let pen&   = @CreatePen(0,1,RGB(0,0,255))Pen para dibujar erzeugen
@Seleccionar objeto(dc&,test&)hBitmap en DeviceContext
@Seleccionar objeto(dc&,pen&)Pen en DeviceContext
@FloodFill(dc&,0,0,RGB(255,255,255))hBitmap blanco füllen
@MoveToEx(dc&,0,0,0) para Startpunkt
@LineTo(dc&,Width(%hwnd),Height(%hwnd))Linie zeichen
Struktur con Punkten invertir ( en diesem Fall 3 Punkte )
Dim Points#,24
1. Punkt
Largo Points#,0 = 0  X
Largo Points#,4 = 0  Y
2. Punkt
Largo Points#,8 = Width(%hwnd)/2
Largo Points#,12 = Height(%hwnd)*2
2. Punkt
Largo Points#,16 = Width(%hwnd)
Largo Points#,20 = 0
@MoveToEx(dc&,0,0,0)para Startpunkt
@PolyBezierTo(dc&,Points#,3)Bezier-Kurve de Punkt-Struktur
@BitBlt(%hdc,0,0,640,480,dc&,0,0,$CC0020)hBitmap en CLS-Ventana Mostrar
@BitBlt(%hdc2,0,0,640,480,dc&,0,0,$CC0020)Hbitmap auch para Sicherungs-DC
Speicher aufräumen
Disponer Points#
@DeleteObject(test&)
@DeleteObject(pen&)
@DeleteDC(dc&)

Mientras 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, danke...
Dann kann Yo a dieser Punto sí igual Fragen, qué lo con esta DCs en se ha:

Was ha lo con esta DCs en se ? Was es el y por qué benötigt uno algo como ?
 
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


¡Hola Christian,

Ein DC oder Devicecontext es grob dijo una Struktur el grafische Objetos y deren Atributos beinhaltet.
Grafische Objetos son Mapa de bits,Brush,Font,Pen y Region.
Jedes Ventana y Control aber auch una Drucker ha una DC el con API-Características suscrito voluntad kann.

CreateCompatibleDC() legt una DC en el Speicher a, diesem DC kann entonces con Seleccionar objeto() uno el o.g. grafischen Objetos zugewiesen voluntad.

Yo hoffe Tengo el 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... sí el debería langen, danke !
 
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 : Su Code war irgendwie muy unübersichtlich, Yo tener el veces así umgeschrieben, Yo ihn brauchen kann :
Def @CreateCompatibleBitmap(3) !gdi32.dll,CreateCompatibleBitmap
Def @CreateCompatibleDC(1) !gdi32.dll,CreateCompatibleDC
Def @Seleccionar objeto(2) !gdi32.dll,Seleccionar objeto
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

    Parámetros DCHandle&, StrichX1&, StrichY1&, StrichX2&, StrichY2&, StrichFarbe&
    Declarar Stift&
    Let Stift&=@CreatePen(0,1,StrichFarbe&)
    @Seleccionar objeto(DCHandle&,Stift&)
    @MoveToEx(DCHandle&,StrichX1&,StrichY1&,0)
    @LineTo(DCHandle&,StrichX2&,StrichY2&)
    @DeleteObject(Stift&)

ENDPROC

Proc SpeicherBitmap

    Parámetros XBreite&, YBreite&
    Declarar DC&, hBitMap&
    Let DC&=@CreateCompatibleDC(%hdc)
    Let hBitMap&=@CreateCompatibleBitmap(%hdc,XBreite&,YBreite&)
    @Seleccionar objeto(DC&,hBitMap&)
    @FloodFill(DC&,0,0,RGB(255,255,255))
    volver DC&

ENDPROC

Proc LadeSpeicherBitmapX

    Parámetros DCHandle&
    @BitBlt(%hdc,0,0,640,480,DCHandle&,0,0,$CC0020)
    @BitBlt(%hdc2,0,0,640,480,DCHandle&,0,0,$CC0020)

ENDPROC

Proc LadeSpeicherBitmap

    Parámetros DCHandle&, XBreite&, YBreite&
    Declarar m%, n%

    Mientras que m% < XBreite&

        Inc m%

        Mientras que n% < YBreite&

            Inc n%

            Caso negativo @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

        Let n%=0

    EndWhile

ENDPROC

Proc ZerstohreSpeicherBitmap

    Parámetros DCHandle&
    @DeleteDC(DCHandle&)

ENDPROC

SetTrueColor 1
CLS @RGB(150,150,150)
Declarar SBit1&
SpeicherBitmap 640,480
Let 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&

Nur Yo una einzelne Farbe durchsichtig bekomme, como bin Yo todavía no 100%-ig sicher. Im Ejemplo oben Aunque una solución, aber el es doch muy langsam !
Und para el letzten Parámetro en BitBlt tener Yo auch nichts passendes gefunden !

mfg Christian

PS: Yo incluso selber ni API-Función con 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


¡Hola Christian

Yo Su Ejemplo veces adaptado.
Es ahora una neue Procedur drin nombre Drawtransparent

Sieht wild de, es aber hoffentlich ausreichend kommentiert.

Im Grunde macht el Procedur Su Speicherbitmap simplemente sólo durchsichtig y características lo en %HDC.

Es allerdings wesentlich más rápido como Su Procedur, como alles en una vez adecuado se.
Def @CreateCompatibleBitmap(3) !gdi32.dll,CreateCompatibleBitmap
Def @CreateCompatibleDC(1) !gdi32.dll,CreateCompatibleDC
Def @Seleccionar objeto(2) !gdi32.dll,Seleccionar objeto
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

    Parámetros DCHandle&, StrichX1&, StrichY1&, StrichX2&, StrichY2&, StrichFarbe&
    Declarar Stift&
    Let Stift&=@CreatePen(0,1,StrichFarbe&)
    @Seleccionar objeto(DCHandle&,Stift&)
    @MoveToEx(DCHandle&,StrichX1&,StrichY1&,0)
    @LineTo(DCHandle&,StrichX2&,StrichY2&)
    @DeleteObject(Stift&)

ENDPROC

Proc SpeicherBitmap

    Parámetros XBreite&, YBreite&
    Declarar DC&, hBitMap&
    Let DC&=@CreateCompatibleDC(%hdc)
    Let hBitMap&=@CreateCompatibleBitmap(%hdc,XBreite&,YBreite&)
    @Seleccionar objeto(DC&,hBitMap&)
    @FloodFill(DC&,0,0,RGB(255,255,255))
    volver DC&

ENDPROC

Proc LadeSpeicherBitmapX

    Parámetros DCHandle&
    @BitBlt(%hdc,0,0,640,480,DCHandle&,0,0,$CC0020)
    @BitBlt(%hdc2,0,0,640,480,DCHandle&,0,0,$CC0020)

ENDPROC

Proc LadeSpeicherBitmap

    Parámetros DCHandle&, XBreite&, YBreite&
    Declarar m%, n%

    Mientras que m% < XBreite&

        Inc m%

        Mientras que n% < YBreite&

            Inc n%

            Caso negativo @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

        Let n%=0

    EndWhile

ENDPROC

Proc ZerstohreSpeicherBitmap

    Parámetros DCHandle&
    @DeleteDC(DCHandle&)

ENDPROC

NEU !

Proc DrawTransparent

    Parámetros inDC&,w&,h&,transcolor&
    Declarar hhBitmap&,BitmapHandle&
    Declarar HdcTemp&,HdcBack&,HdcObject&,HdcMem&,hdcSave&
    Declarar BmpAndBack&,BmpAndObject&,BmpAndMem&,BmpSave&
    Declarar BmpBackOld&,BmpObjectOld&,BmpMemOld&,BmpSaveOld&
    Declarar CColor&
    temporaerDC invertir
    Let HdcTemp& = CreateCompatibleDC(%hdc)
    Let hhBitMap&=@CreateCompatibleBitmap(%hdc,w&,h&)
    Seleccionar objeto(HdcTemp&,hhBitMap&)
    BitBlt(HdcTemp&,0,0,w&,h&,inDC&,0,0,$0CC0020)
    una pocos Speicher-DCs invertir
    Let HdcBack&   = CreateCompatibleDC(%hdc)
    Let HdcObject& = CreateCompatibleDC(%hdc)
    Let HdcMem&    = CreateCompatibleDC(%hdc)
    Let HdcSave&   = CreateCompatibleDC(%hdc)
    Bitmaps invertir
    monochrom DC
    Let BmPAndBack&   = CreateBitmap(w&,h&,1,1,0)
    Let BmPAndObject& = CreateBitmap(w&,h&,1,1,0)
    farbe
    Let BmPAndMem&    = CreateCompatibleBitmap(%hdc,w&,h&)
    Let BmPSave&      = CreateCompatibleBitmap(%hdc,w&,h&)
    SetMapMode(HdcTemp&,GetMapMode(%hdc))
    cada Speicher-DC muss una Mapa de bits selektieren para Guardar el Daten
    Let BmpBackOld&   = Seleccionar objeto(HdcBack&,BmPAndBack&)
    Let BmpObjectOld& = Seleccionar objeto(HdcObject&,BmpAndObject&)
    Let BmpMemOld&    = Seleccionar objeto(HdcMem&,BmpAndMem&)
    Let BmpSaveOld&   = Seleccionar objeto(HdcSave&,BmpSave&)
    Bitmaps sichern porque lo ueberschrieben se
    BitBlt (HdcSave&,0,0,w&,h&,HdcTemp&,0,0,$0CC0020)
    Transparenz-Farbe fuer temporaerDC conjunto
    Let CColor& = SetBkColor(HdcTemp&,TransColor&)
    Un Object-Maske invertir fuer el Bitmaps invertir
    Von QuellBitmap en Monochrom-Mapa de bits
    BitBlt(HdcObject&,0,0,w&,h&,HdcTemp&,0,0,$0CC0020)
    Color de fondo fuer temoraerDC es blanco
    SetBkColor(HdcTemp&,rgb(255,255,255))
    Object-Maske invertieren
    BitBlt(HdcBack&,0,0,w&,h&,HdcObject&,0,0,$0330008)
    HDC-Hintergrund en el MemoryDC kopieren
    BitBlt(HdcMem&,0,0,w&,h&,%hdc,0,0,$0CC0020)
    Zona maskieren en el el Bitmaps erscheint
    BitBlt(HdcMem&,0,0,w&,h&,HdcObject&,0,0,$08800C6)
    transparenten Zona maskieren
    BitBlt(HdcTemp&,0,0,w&,h&,HdcBack&,0,0,$08800C6)
    XOR Mapa de bits con Hintergrund HDC
    BitBlt(HdcMem&,0,0,w&,h&,HdcTemp&,0,0,$0EE0086)
    transparentes Mapa de bits en HDC kopieren
    BitBlt(%hdc,0,0,w&,h&,HdcMem&,0,0,$0CC0020)
    y en el Speicher-HDC kopieren
    BitBlt(%hdc2,0,0,w&,h&,HdcMem&,0,0,$0CC0020)
    Speicher-Bitmaps liberación
    DeleteObject(Seleccionar objeto(HdcBack&,BmpBackOld&))
    DeleteObject(Seleccionar objeto(HdcObject&,BmpObjectOld&))
    DeleteObject(Seleccionar objeto(HdcMem&,BmpMemOld&))
    DeleteObject(Seleccionar objeto(HdcSave&,BmpSaveOld&))
    DeleteObject(Seleccionar objeto(HdcTemp&,hhBitmap&))
    Speicher-Dcs liberación
    DeleteDC(HdcMem&)
    DeleteDC(HdcBack&)
    DeleteDC(HdcObject&)
    DeleteDC(HdcSave&)
    DeleteDC(HdcTemp&)

ENDPROC

SetTrueColor 1
CLS @RGB(150,150,150)
Declarar SBit1&,haDC&
LoadBmp $syspath+\setup.bmp,0,0;0  Hintergrundbild para Testn ( Pfad adaptar !! )
SpeicherBitmap 640,480
Let 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
Gracias, Yo hatte el problema, dass mi Procedimiento bastante langsam war ...
Yo aber sólo nichts besseres gefunden ...

Gracias para el Ayuda con el 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  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

1.134 Views

Untitledvor 0 min.
H.Brill18.09.2023
Walter11.04.2023
Ernst18.04.2014
iF08.05.2013
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie