Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   DirectDrawSurface auf anderes Surface zeichnen (https://www.delphipraxis.net/206394-directdrawsurface-auf-anderes-surface-zeichnen.html)

Pflaumi 16. Dez 2020 18:55

DirectDrawSurface auf anderes Surface zeichnen
 
Hallo zusammen, ich habe mal wieder eine Frage zu DelphiX:

Ich würde gerne mehrere Bilder auf ein Surface von DelphiX malen
Code:
procedure TForm1.Draw;
var a: TDirectDrawSurface;
begin
  DXImageList1.Items[0].Draw(a, 0, 0, 0);
end;
Da das Bild alle 100 Millisekunden immer gemalt wird, will ich Bilder, die sich eh nie ändern, ganz am Anfang zeichen und dann alle 100 Millisekunden nur das fertige Bild zeichnen.
Jetzt mache ich so weiter:
Code:
procedure TForm1.Draw;
var a: TDirectDrawSurface;
var r: TRect;
begin
  DXImageList1.Items[0].Draw(a, 0, 0, 0);
  a.SetSize(100, 100);
  r := Rect(0, 0, 100, 100);
  a.Draw(0, 0, r, DXDraw1.Surface, false);
  DXDraw1.Flip;
end;
Dann erscheint immer diese Fehlermeldung:

Zugriffsverletzung bei Adresse 004615C8 in Modul "Projekt1.exe".
Lesen von Adresse C08BC38F.


Und dann bleibt der Bildschirm schwarz...

Ich würde mich freuen, wenn jemand dazu eine Lösung hat :-D !

PS: Kann man hier irgentwo seinen Namen (Nickname) ändern?

eccothedelphi 16. Dez 2020 22:33

AW: DirectDrawSurface auf anderes Surface zeichnen
 
Bei deinem Code Problem kann ich dir leider nicht helfen. Aber als normaler User kannst du so viel ich weiß denen Nicknamen nicht selbst ändern. Du kannst aber mal versuchen einen Moderator zu fragen, oder die Admins anzuschreiben.

himitsu 17. Dez 2020 00:28

AW: DirectDrawSurface auf anderes Surface zeichnen
 
A: Wo knallt es?
Der Debugger sollte ja die Zeile nennen.

B: Was ist TDirectDrawsurface?
Wenn ich bissl Google, dann finde ich überall ein
Delphi-Quellcode:
TDirectDrawsurface.Create(DXDraw1.ddraw)
und würde demnach die Vermutung bekommen, dass du vergessen hast a zu initialisieren
oder von irgendwo zu holen (eventuell
Delphi-Quellcode:
DXDraw1.Surface
).



X: Unten auf "Kontakt" und schreiben, dass man dich doch bitte umbenennen möge.

Pflaumi 17. Dez 2020 08:24

AW: DirectDrawSurface auf anderes Surface zeichnen
 
Zu A:
Es klappt dann ab dem Befehl nicht mehr:
Code:
a.Draw(0, 0, r, DXDraw1.Surface, false);
Und zu B:
TDirectDrawSurface ist das Surface von dem TDXDraw.

Ich kann ja mal probieren, das irgentwie nochmal zu initialisieren.

Pflaumi 18. Dez 2020 18:46

AW: DirectDrawSurface auf anderes Surface zeichnen
 
Zu dem TDirectDrawSurface.Create:
Es kommt keine Fehlermeldung mehr :)
Allerdings bleibt der Bildschirm noch schwarz, daran werde ich morgen noch weiter fummeln. Trotzdem vielen Dank für die Hilfe :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz