| |
|
|
funkheld | Dieses bild& in der While-Schleife; bild&=create("hpiccopy",screen&,200,200,50,50) wird ja immer wieder neu erzeugt. Wird da immer wieder neuer Speicher verbraucht, oder wird das Bild immer in den gleichen Speicherbereich gelegt, so das das vorgehende nicht rausgenommen werden braucht?
Danke.
Gruss
{$cleq}
{$compiler d:\xprofan11\}
{$runtime d:\xprofan11\}
declare screen&,bild&,ende&
ende&=1
Window 20,20-500,500
Cls RGB(220,220,220)
screen& = create("hNewPic", 400,400,rgb(255,255,0))
startpaint screen&
usebrush 1,rgb(0,128,255)
ellipse 200,200-250,250
endpaint
Whileloop 10000
drawpic screen&,20,20;0
bild&=create("hpiccopy",screen&,200,200,50,50)
startpaint screen&
drawpic bild&,100,10;0
endpaint
EndWhile
End
|
|
|
| |
|
|
|
Jörg Sellmeyer | Profan-Hilfe zu Create (hPic...)
Vor dem Beenden des Programmes muß das Handle mit DeleteObject wieder freigegeben werden, da ansonsten der von der Bitmap belegte Speicherplatz nicht wieder an das System zurückgegeben wird.
In Deinem Fall wird die Schleife ja nur einmal durchlaufen, da kann nicht so viel passieren. Du kannst aber mit DeleteObject das Handle immer wieder löschen. Wenn Du tatsächlich viele Handles bneötigst, speicherst Du sie am Besten in einem Array. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 13.04.2012 ▲ |
|
|
|
|
funkheld | Habe jetzt eine Whileloop mit 10000 Es kommt zum Crash.
Wie kann ich jetzt etwas vom Screen in die Variable bild& setzen ohne dauernd dieses DeleteObject bild& zu nutzen .
Gibt es kein Befehl dazu?
Danke. Gruss |
|
|
| |
|
|
|
| DeleteObject ist der übliche Weg. |
|
|
| |
|
|
|
Jörg Sellmeyer | Was hast Du gegen DeleteObject? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 13.04.2012 ▲ |
|
|
|
|
funkheld | Jup, danke. Ich habe unten ein Bereich eingerichtet mit : mcls 50,50 Darin habe ich ein Teil des Screen kopiert : copybmptomem 200,200-50,50>0,0
Wie bekomme ich das BIld jetzt an eine bestimmte stelle vom Screen&? Wie komme ich an die Adresse des mcls-Speichers um die Daten zu manipulieren ?
Danke.
Gruss
{$cleq}
{$compiler d:\xprofan11\}
{$runtime d:\xprofan11\}
declare screen&,bild&,ende&
ende&=1
Window 20,20-500,500
Cls RGB(220,220,220)
screen& = create("hNewPic", 400,400,rgb(255,255,0))
bild&=create("hnewpic",60,60,rgb(0,0,0))
mcls 50,50
startpaint screen&
usebrush 1,rgb(0,128,255)
ellipse 200,200-250,250
endpaint
While ende&
drawpic screen&,20,20;0
copybmptomem 200,200-50,50>0,0
.........
EndWhile
waitkey
End
|
|
|
| |
|
|
|
Jörg Sellmeyer | Du kannst auch mit StartPaint -1 direkt auf die Memorybitmep zeichnen oder Du erzeugst mit @Create("hPic",N,S) und dem Parameter "&MEMBMP" eine Kopie Profanhilfe zu Create (hPic,...)
... der aktuellen mit MCLS oder MLOADBMP erzeugten Speicherbitmap.... |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 13.04.2012 ▲ |
|
|
|
|
| Gibt ja auch MCopyBmp X1,Y1 - X2,Y2 > X3,Y3; N1[, N2] was man nach StartPaint auf Screen anwenden kann. |
|
|
| |
|
|
|
|
Darin habe ich ein Teil des Screen kopiert
Und wenn der Screen (teils, z.B. von Fenstern) verdeckt wird? |
|
|
| |
|
|
|
funkheld | MCopyBmp geht nur bei MLoadBmp Bildern:
Der Bildschirmausschnitt der beginnend bei X1,Y1 eine Breite von X2 Pixel und eine Höhe von Y2 Pixel hat, wird aus dem mit MLoadBmp geladenem Bild an die Position X3,Y3 kopiert.
Trifft bei mir aber nicht zu, ich möchte eine Kopie ohne immer dieses "Create"...
Danke.
Gruss |
|
|
| |
|
|
|
| @Funkheld: Was genau hast Du denn vor?
Ich kann mir nämlich vorstellen das es eine einfachere/ schnellere Herangehensweise gibt.
Wenn Du sowas wie "Sprites" realisieren möchtest dann empfehle ich das Bild im Speicher zusammenzusetzen und einmal pro Frame auf das Zielausgabefenster zu kopieren.
Quasi vom Ablauf her:
|
|
|
| |
|
|
|
funkheld |
Was hast Du gegen DeleteObject?
Wenn ich etwas laufend speichern möchte zum Auswerten, warum muss man da immer eine neuen Speicherbereich schaffen und wieder freigeben.
Gibt es nichts das man nur mit dem einem Reservierten Speicherbereich für einen bestimmten Zweck arbeitet mit der Grafik?
Danke.
If: kanndst du so etwas mal wieder als Nativen Code für XPSE entwickeln ?
Danke.
Gruss |
|
|
| |
|
|