Deutsch
Quelltexte/ Codesnippets

Fadetogray

 
- Seite 1 -



Andreas
Miethe


Einen habe ich noch für dieses Jahr.

Bildschirm eingrauen, wie beim XP-Abmelde-Dialog.
KompilierenMarkierenSeparieren
 $H Windows.ph
Importdll("GDI32.DLL","")
struct  COLORADJUSTMENT =
caSize%,
caFlag%,
caIlluminantIndex%,
caRedGamma%,
caGreenGamma%,
caBlueGamma%,
caReferenceBlack%,
caReferenceWhite%,
caContrast%,
caBrightness%,
caColorfulness%,
caRedGreenTint%

Proc FadetoGray

    windowstyle $F0
    Var CA# = New(COLORADJUSTMENT)
    Bild anlegen
    Var Pic& = Create("hNewPic",%maxx,%maxy,0)
    Var DC& = ~CreateCompatibleDC(%hdc)
    Ausgangsbild anlegen
    Var Pic1& = Create("hNewPic",%maxx,%maxy,0)
    Var DC1& = ~CreateCompatibleDC(%hdc)
    DC vom Desktop
    Var DC2& = ~CreateDC("DISPLAY",0,0,0)
    Bilder ins DC
    ~SelectObject(DC&,PIC&)
    ~SelectObject(DC1&,PIC1&)
    Vom Desktop ins Ausgangsbild
    dient nur dazu ein Bild zu haben !
    StretchBlt(DC1&,0,0,%maxx,%maxy,DC2&,0,0,%maxx,%maxy,~SRCCOPY | $40000000)
    Window 0,0-%maxx,%maxy
    ColorAdjustment holen
    GetColorAdjustment(%hdc2,CA#)
    Blittmode auf HALFTONE setzen
    SetStretchBltMode(%hdc2,4)
    Full Color auf Werte zwischen -100 und 100

    whileLoop CA#.caColorfulness%,-100,-8

        CA#.caColorfulness% = &Loop  Grautöne
        ColorAdjustment setzen
        SetColorAdjustment(%hdc2,CA#)
        StretchBlt(%hdc2,0,0,%maxx,%maxy,DC1&,0,0,%maxx,%maxy,~SRCCOPY)
        DrawsizedPic Pic&,0,0-%maxx,%maxy;0
        Repaint

    endwhile

    Bilder freigeben
    ~DeleteDC(DC&)
    ~DeleteDC(DC1&)
    ~DeleteDC(DC2&)
    ~DeleteObject(Pic&)
    ~DeleteObject(Pic1&)
    Dispose CA#

EndProc

FadeToGray()
waitinput 10000
end
 
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 :  [...] 
28.12.2009  
 



 
- Seite 2 -


Stürzt es bei Dir nicht?
 
30.12.2009  
 




Frank
Abbing
Teste das Beispiel in meinem letzten Posting. Funktioniert sehr schön.
Bei MSDN wird von Addresse auf Struktur nicht geredet, sondern von Struktur. In solchen Fällen darfst du keinen Zeiger angeben sondern die Daten der Struktur direkt angeben. In diesem Fall ist das sehr einfach, weil nur ein LongInt übergeben werden muss. Ist lediglich etwas Bitrechnerei. Du kannst aber auch Byte bereich#=0,0,128,0 / Long(bereich#,0) benutzen (ungetestet, aber so ähnlich).
 
30.12.2009  
 



>> Teste das Beispiel in meinem letzten Posting. Funktioniert sehr schön.

Nein drum meine ich ja, stürzt bei mir genauso mit selber Meldung read von 0 - also keine Änderung.
 
30.12.2009  
 




Frank
Abbing
Bei mir läuft es wie es sein soll. Nach Mausklick legt sich die (schwarze) Bitmap zu 50% transparent (sieht dann grau aus wegen des weißen Hintergrunds) über den Print-Text. In Shooter und OFrame benutze ich es genauso, ohne Probleme.
Vielleicht hast du doch nicht den ganzen Sourcecode kopiert gehabt? Hatte deinen ursprünglichen Code nämlich abgeändert.

 
30.12.2009  
 




Andreas
Miethe


Bei mir funktioniert es auf diese Art.
KompilierenMarkierenSeparieren
 $H Windows.ph
cls
Print "Alphablend"
Var bm1& = Create("hNewPic",256,256,$80)
Var DC1& = ~CreateCompatibleDC(0)
~SelectObject(DC1&,bm1&)
Var bm2& = Create("hNewPic",256,256,$FFFFFF)
Var DC2& = ~CreateCompatibleDC(0)
Startpaint bm2&
DrawText 100,100,"TEXT"
Endpaint
~SelectObject(DC2&,bm2&)
var bf& = 128 << 16
Waitinput
~AlphaBlend(%hdc,0,0,256,256,dc1&,0,0,256,256,bf&)
bf& = 64 << 16
Waitinput
~AlphaBlend(%hdc,0,0,256,256,dc2&,0,0,256,256,bf&)
waitinput
end
 
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 :  [...] 
30.12.2009  
 




Frank
Abbing
Du benutzt ja die gleiche Methode (nur mit Bitgeschiebe). Da sollte mein Code bei dir doch auch gehen, oder?
 
30.12.2009  
 




Andreas
Miethe


Frabbing, Beitrag=55678, Zeitpunkt=30.12.2009
Du benutzt ja die gleiche Methode (nur mit Bitgeschiebe). Da sollte mein Code bei dir doch auch gehen, oder?


Der funktioniert bei mir ! Waren mir nur zu viele Nullen und Einsen
 
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 :  [...] 
30.12.2009  
 




Frank
Abbing
Ach so, ja. Sollte auch nur die Technik auf niederem Level demonstrieren. Meine nur, weils bei David nicht ging. Hat er wohl was verschusselt.
 
30.12.2009  
 



Ja, hab ich was verschusselt - es funktioniert natürlich!
 
31.12.2009  
 




p.specht
Allererstes Beispiel von Andreas Miethe+ rennoviert:
' $H Windows.ph
Importdll("GDI32.DLL","")
struct  COLORADJUSTMENT = \
caSize%, \
caFlag%, \
caIlluminantIndex%, \
caRedGamma%, \
caGreenGamma%, \
caBlueGamma%, \
caReferenceBlack%, \
caReferenceWhite%, \
caContrast%, \
caBrightness%, \
caColorfulness%, \
caRedGreenTint%

Proc FadetoGray

    windowstyle $F0
    Var CA# = New( COLORADJUSTMENT )
    '   Bild anlegen
    Var Pic& = Create("hNewPic",%maxx,%maxy,0)
    Var DC& = ~CreateCompatibleDC(%hdc)
    '   Ausgangsbild anlegen
    Var Pic1& = Create("hNewPic",%maxx,%maxy,0)
    Var DC1& = ~CreateCompatibleDC(%hdc)
    '   DC vom Desktop
    Var DC2& = ~CreateDC("DISPLAY",0,0,0)
    '   Bilder ins DC
    ~SelectObject(DC&,PIC&)
    ~SelectObject(DC1&,PIC1&)
    '   Vom Desktop ins Ausgangsbild
    '   dient nur dazu ein Bild zu haben !
    StretchBlt(DC1&,0,0,%maxx,%maxy,DC2&,0,0,%maxx,%maxy,~SRCCOPY | $40000000)
    Window 0,0-%maxx,%maxy
    '   ColorAdjustment holen
    GetColorAdjustment(%hdc2,CA#)
    '   Blittmode auf HALFTONE setzen
    SetStretchBltMode(%hdc2,4)
    '   Full Color auf Werte zwischen -100 und 100

    whileLoop CA#.caColorfulness%,-100,-8

        CA#.caColorfulness% = &Loop'  Grautöne
        '       ColorAdjustment setzen
        SetColorAdjustment(%hdc2,CA#)
        StretchBlt(%hdc2,0,0,%maxx,%maxy,DC1&,0,0,%maxx,%maxy,~SRCCOPY)
        DrawsizedPic Pic&,0,0-%maxx,%maxy;0
        Repaint

    endwhile

    '  Bilder freigeben
    ~DeleteDC(DC&)
    ~DeleteDC(DC1&)
    ~DeleteDC(DC2&)
    ~DeleteObject(Pic&)
    ~DeleteObject(Pic1&)
    Dispose CA#

EndProc

FadeToGray()
waitinput 10000
end

P.S.: Klappt auch in Win7-64SP1
 
So Computer sind halt auch nur Menschen...
vor 29 Tagen  
 




Manfred
Barei
Also unter Win 10 passiert nichts
 
XProfan X2
Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 |
vor 28 Tagen  
 



 
- Seite 3 -



p.specht
Danke für die Info! Mit Win10 habe ich leider keine Erfahrung. Vielleicht braucht man lokalen Admin-Status?
Gruss
 
XProfan 11
So Computer sind halt auch nur Menschen...
vor 26 Tagen  
 




Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.339 Betrachtungen

Unbenanntvor 0 min.
Micha12334 vor 10 Tagen
Member 2883049 vor 15 Tagen
Ernst vor 15 Tagen
Roland Schäffer vor 21 Tagen
Mehr...

Themeninformationen



AGB  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Impressum  |  Mart  |  Support  |  Suche

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