Deutsch
C ++ Forum

Transparentes Bitmap laden

 
Hallo Profaner...

Ich lade mittels Loadimage eine Bitmap und platziere die Bitmap mittels Sendmessage auf ein Static. Nun möchte ich die Bitmap aber gerne transparent laden. Da ich in dem Programm keine Profan-Speicherbitmaps verwenden kann, kann ich es über meine übliche Trickserei nicht regeln. Hat jmand eine Idee über API?
 
11.08.2005  
 




Jörg
Sellmeyer
Hallo Andreas,
Eigentlich müßte das funktionieren:
KompilierenMarkierenSeparieren
 $H Windows.ph

Proc SysTrans

    nach Michael Dell
    Parameters BmpNameIn$,BmpNameOut$
    MCls 128,16
    StartPaint -1
    Cls ~GetSysColor(15)
    LoadBmp BmpNameIn$,0,0;-1
    SaveBmp BmpNameOut$,0,0-128,16
    EndPaint

EndProc


[...] 
Du mußt nur die entsprechende Syscolor-Message benutzen.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
11.08.2005  
 



Hallo Jörg...

So löse ich das bislang. Da ich das Programm mit Profan2Cpp compilieren will, geht das leider nicht...
 
12.08.2005  
 




Jörg
Sellmeyer
Ah... mal wieder nicht richtig gelesen (keine Profan-Speicherbitmap)

Vielleicht hilft Dir das:
KompilierenMarkierenSeparieren
DEF CreateCompatibleDC(1) !"GDI32","CreateCompatibleDC"
DEF TextOut(5) !"GDI32","TextOutA"
DEF SelectObject(2) !"GDI32","SelectObject"
DEF DeleteDC(1) !"GDI32","DeleteDC"
DEF SetTextColor(2) !"GDI32","SetTextColor"
DEF SetBkColor(2) !"GDI32","SetBkColor"
DEF SetBkMode(2) !"GDI32","SetBkMode"
declare text#

proc TextOutToBitmap

    parameters hBitmap&,text$,x&,y&,clrBk&,clrText&
    dim text#,@len(text$)
    string text#,0 = text$
    declare hMemDC&,hBitmapOld&
    let hMemDC& = CreateCompatibleDC(0)
    let hBitmapOld& = SelectObject(hMemDC&,hBitmap&)

    if @equ(clrBk&,-1)

        SetBkMode(hMemDC&,1)

    else

        SetBkMode(hMemDC&,2)
        SetBkColor(hMemDC&,clrBk&)

    endif

    SetTextColor(hMemDC&,clrText&)
    TextOut(hMemDC&,x&,y&,text#,@len(text$))
    SelectObject(hMemDC&,hBitmapOld&)
    DeleteDC(hMemDC&)
    dispose text#

endproc

Beschreibung der Parameter:
hBitmap& - Das Handle der Bitmap für die Textausgabe
text$ - Der Text
x& - Die Koordinaten...
y&
clrBk& - Die Hintergrundfarbe (-1 für Transparenz)
clrText& - Die Textfarbe

Ist glaube ich von Andreas Miethe.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
12.08.2005  
 




Sebastian
König
Hallo Andreas,

[quote:b1366991c7]So löse ich das bislang. Da ich das Programm mit Profan2Cpp compilieren will, geht das leider nicht...[/quote:b1366991c7]
sorry, vielleicht stehe ich gerade etwas auf dem Schlauch, aber wieso kannst Du die Lösung wegen Profan2Cpp nicht verwenden?

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
12.08.2005  
 



Hallo Sebastian...

Ich schaus mir noch einmal an, bislang klappte aber alles, das mit Speicherbitmaps zu tun hatte, bei mir nicht - vielleicht mein Fehler?

@Jörg: Mal schaun, besten Dank!
 
13.08.2005  
 




Jörg
Sellmeyer
Ich benutze übrigens das für transparente Resourcen - klappt mit P2CCP.
Allerdings werden die Toolbar und Buttons nicht korrekt dargestellt. DieTransparenzklappt aber:
KompilierenMarkierenSeparieren
Proc TransparentResource

    Parameters Res$,b%,h%
    Declare Temp_Bmp$
    Randomize
    Temp_Bmp$=$TempDir + "BB" + Hex$(Rnd(50000)) + "BB" + Hex$(Rnd(50000)) + ".bmp"
    MCLS b%,h%
    StartPaint -1
    Cls ~GetSysColor(15)
    DrawExtBmp %HInstance,Res$,0,0;-1
    SaveBmp Temp_Bmp$,0,0-b%,h%
    EndPaint
    Return Temp_Bmp$

EndProc

 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
13.08.2005  
 



Hallo Jörg, ich sehe irgendwie den Unterschied in den beiden Postings nicht, könntest Du das nochmal erläutern
 
13.08.2005  
 




Jörg
Sellmeyer
oh, versehentlich doppelt...

iihiiF!! Kannst Du mal bitte aufräumen?
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
13.08.2005  
 




Sebastian
König
@Andreas: Danke - vielleicht hat sich da tatsächlich noch ein Fehler versteckt...

@iF: Ich wollte Dir zuvorkommen und den versehentlich doppelt geposteten Eintrag von Jörg entfernen, aber wenn ich auf Löschen klicke, komme ich nur auf die Beitrag splitten-Seite... ist das so gewollt?
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
13.08.2005  
 




Frank
Abbing
@Sebastian:
iF mags nicht mehr, das irgendwelche Postings gelöscht werden. Stattdessen soll das Posting abgesplittet und in den Mülleimer verschoben werden. Mir selber ist das zu kriminell - hab immer Angst den ganzen Thread dadurch zu zerstören. Dann muss iF mal selber ran oder besser noch den alten Zustand wieder herstellen. Aber das muss hier ja nicht diskutiert werden.
Noch was: Leider hab ich momentan zu viel um die Ohren, um Profan2Cpp ausgiebig testen zu können. Also nicht sauer sein...
 
13.08.2005  
 



Hallo Sebastian...

In der neuen Beta klappt es, in meiner Vollversion kommt ein Hinweis auf ein fehlendes Fenster. Kannst du daran was drehen?
KompilierenMarkierenSeparieren
DEF @GetSysColor(1) !"USER32","GetSysColor"
Window 0,0-640,440
Settruecolor 1
MCLS 800,600
Startpaint -1
cls @GetSysColor(15)
LoadBmp "F:RTSDFXC.BMP", 0,0;-1
SaveBmp "F:RTSDFXC.men",0,0-%BmpX,%BmpY
endpaint
LoadBmp "F:RTSDFXC.men", 0,0;0
waitinput
 
13.08.2005  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.923 Betrachtungen

Unbenanntvor 0 min.
Joerg10.06.2016
Georg Teles15.02.2016
iF30.01.2013
AndreasS07.12.2011
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie