Autor | Thema: Merkwürdige Transparentdarstellung | | Datum:22.08.02 23:18 
(b.kuenzel@chello.at) | |
Hallo,
kann mir bitte jemand das merkwürdige verhaten der transparentdarstellung testen.
Die merkwüdigkeiten sind im programm beschrieben.
Ich habe Win98SE und Profan 7.5
Danke
Gruß
Brnhard
SetTrueColor 1
Proc Grafik
MCLS 90,90
StartPaint -1
UseBrush 1,RGB(255,0,255)
UsePen 0,1,RGB(255,0,255)
Rectangle 0,0-90,90
UseBrush 1,RGB(0,0,255)
UsePen 0,1,RGB(0,0,255)
Ellipse 20,20-70,70
EndPaint
MCopyBmp 0,0-90,90 > 0,0;-1
EndProc
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'funktioniert im Interpretermodus mit Proc Grafik und LoadBmp
'
'mit COMPILAT und LoadBmp-->mit und ohne Komentarzeilen
'FEHLER!!!//die Transparentfarbe in der Grafik wird grau dargestellt Fensterfarbe OK
'
'mit COMPILAT und Proc Grafik-->mit Komentarzeilen
'funktioniert es
'im COMPILAT und Proc Grafik-->ohne Komentarzeilen
'(alle Komentarzeilen außerhalb der Proceduren vor dem compilieren löschen)
'FEHLER!!!!//wird das ganze Fenster einschliesslich der Transparentfarbe grau dargestellt
'++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Proc Variant_Außerhalb
WindowStyle 16+512
WindowTitle "Variant_Außerhalb"
Window %MaxX,0-561,330
Cls RGB(230,230,230)
SetWindowPos %hWnd=200,200-561,330;0
Grafik
'LoadBmp "Testgrafik.bmp",0,0;-1
EndProc
'++++++++++++++++++++++++++++++++++++++++++++++++++
'funktioniert im Interpretermodus und im compilat
'mit Proc Grafik und LoadBmp
'++++++++++++++++++++++++++++++++++++++++++++++++++
Proc Variant_Innerhalb
WindowStyle 16+512
WindowTitle "Variant_Innerhalb"
Window 200,200-561,330
Cls RGB(230,230,230)
Grafik
'LoadBmp "Testgrafik.bmp",0,0;-1
EndProc
Variant_Außerhalb
WaitInput
Variant_Innerhalb
WaitInput
|
| | Datum:22.08.02 23:24 
(martin_pohl@msn.com) | |
Ich habe da einen Verdacht:
StartPaint -1
Hinter StartPaint gibt man eigentlich ein Fenster- oder DialogHandle an. Was soll die -1 da?
|
| | Datum:23.08.02 00:17 
(b.kuenzel@chello.at) | |
Hallo Martin,
Startpaint -1 bedeutet, dass in den memospeicher gezeichnet wird.
Im programm ist sicher kein fehler, der fehler dürfte sich beim compilieren einschleichen.
Gruß
Bernhard
|
| | Datum:23.08.02 01:06 
(joerse@gmx.de) | |
Hallo Bernd,
Keine Ahnung was das bezweckt, aber bei mir zeigt sich ein hellgraues
Fenster mit einem blauen Punkt links oben.
Das ändert sich nicht, egal ob ich Kommentare drin habe oder nicht
oder compiliere oder sonstwas.
Nur der Fenstertitel ändert sich (logischerweise).
Gruß
Jörg
|
| | Datum:23.08.02 01:47 
(b.kuenzel@chello.at) | |
Hallo Jörg,
danke für deine antwort, bitte würdest du noch deine winversion und profanversion angeben.
Gruß
Bernhard
|
| | Datum:23.08.02 09:08 
(rgh-soft@t-online.de) | |
Hallo Bernhard,
ich fürchte das liegt einfach daran, daß Du in ein Fenster zeichnest, das nicht auf dem Bildschirm dargestellt wird, bzw. schon bei der Erzeugung außerhalb des Bildschirmes (und damit des Bildschirmspeichers) ist. Ob das funktioniert oder nicht ist eher Zufall, bzw. von Rechner zu Rechner unterschiedlich.
Gruß
Roland
|
| | Datum:23.08.02 21:53 
(b.kuenzel@chello.at) | |
Hallo Roland,
deine vermutung dürfte nicht ganz stimmen, da ich schon hunderte solcher fenster, ausserhalb des desktop programmiert habe, sogar in voller fenstergröße, dort wird der ganze bildschirm aufgebaut, ob farbverläufe, färbige schriften mit transparentem hintergrund, dialogelemente usw., hat bis jetzt immer klaglos funktioniert (auch bei allen winversionen und auf verschiedenen computern) nur die funktion GetPixel() funktioniert ausserhalb des fensters nicht, es wird immer 0 zurückgegeben.
Hatte aber bis jetzt nie eine grafik mit transparentfarbe verwendet, ohne transparentdarstellung funktioniert es.
Deshalb dachte ich es kann nur an der transparentdarstellung liegen.
Danke für deine antwort, werde es halt anders lösen.
Gruß
Bernhard
|
| | Datum:24.09.02 15:38 
(b.kuenzel@chello.at) | |
Hallo Roland,
die gleiche situation habe ich auch, wenn ich das fenster innerhalb des bildschirms öffne, dann zwischen LockWindowUpdate die fensterfarbe ändere, erscheint immer die ursprüngliche fensterfarbe als transparentfarbe einer grafik durch, aber eben nur beim compilat.
Gruß
Bernhard
'//Beispiel:
Window 200,200-200,300
SetTrueColor 1
MCLS 90,90
'//Grafik erstellen
StartPaint -1
UseBrush 1,RGB(255,0,255)
UsePen 0,1,RGB(255,0,255)
Rectangle 0,0-90,90
UseBrush 1,RGB(0,0,255)
UsePen 0,1,RGB(0,0,255)
Ellipse 20,20-70,70
EndPaint
'//
Cls 0'-->hier wird das fenster schwarz eingefärbt
External("USER32","LockWindowUpdate",%hWnd)
Cls RGB(230,230,230)'-->hier wird die fensterfarbe geändert
External("USER32","LockWindowUpdate",0)
MCopyBmp 0,0-90,90 > 0,0;-1'-->hier soll die grafik transparent gezeichnet werden
WaitInput
'************************
|
| | Datum:23.08.02 11:28 
(joerse@gmx.de) | |
Hallo Bernd,
Win98 und 7.5
Sebastian König hat mal etwas mit einer Api Memorybitmap ausgetüftelt.
Vielleicht hilft Dir das weiter:
'+---------------------------------------------------------------------+
'| membmp.prf |
'| Autor: Sebastian König |
'| email: feedback@sekoenig.de |
'| Homepage: http://www.sekoenig.de |
'| Quellcode, der demonstriert, wie man auf dem Profan²-Hauptfenster |
'| und in einer Speicher-Bitmap zur weiteren Verwendung speichern kann |
'+---------------------------------------------------------------------+
'Benötigte API-Funktionen:
DEF GetDC(1) !"USER32","GetDC"
DEF CreateCompatibleDC(1) !"GDI32","CreateCompatibleDC"
DEF CreateCompatibleBitmap(3) !"GDI32","CreateCompatibleBitmap"
DEF SelectObject(2) !"GDI32","SelectObject"
DEF BitBlt(9) !"GDI32","BitBlt"
DEF DeleteObject(1) "GDI32","DeleteObject"
DEF DeleteDC(1) !"GDI32","DeleteDC"
window 100,100-400,300
SetTrueColor 1
declare hBitmap&,memDC&
let memDC& = CreateCompatibleDC(%hdc) 'DC erstellen
let hBitmap& = CreateCompatibleBitmap(%hdc,50,50) 'Bitmap erstellen
SelectObject(memDC&,hBitmap&) 'Bitmap in DC selektieren
'Ein bischen malen...
Cls RGB(255,100,0)
Rectangle 10,10-30,30
Rectangle 20,20-40,40
Gruß
Jörg
|
| | Datum: 24.09.02 22:30 
(GTelzerow@T-Online.de) | |
Hallo Bernd,
unter win 2000 und Profan 7.5 gibt es keine Probleme.
Ich habe auch so ein Phänomen!
Mit dem Betriebsystem XP Home.
Wenn Programme unter win 2000 und Profan 7.5 Comipliert werden,
werden Dubioser weise fast alle Dialog-Elemente Transparent dargestellt (direkt Platziert, und ohne Paint).
Mfg
Gerd
|
|
|