Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 240854 (2290)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Merkwürdige Transparentdarstellung
Bernhard Künzel
| 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
Martin Pohl
| 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?
Bernhard Künzel
| 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
Jörg Sellmeyer
| 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
Bernhard Künzel
| 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
Roland G. Hülsmann
| 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
Berhard Künzel
| 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
Bernhard Künzel
| 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 '************************
Jörg Sellmeyer
| 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
Gerd Telzerow
| 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

| Zurück zur Übersicht