AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE DirectDrawSurface auf anderes Surface zeichnen

DirectDrawSurface auf anderes Surface zeichnen

Ein Thema von Pflaumi · begonnen am 16. Dez 2020 · letzter Beitrag vom 18. Dez 2020
Antwort Antwort
Benutzerbild von Pflaumi
Pflaumi

Registriert seit: 21. Mai 2019
Ort: Reichenschwand
36 Beiträge
 
Delphi 7 Professional
 
#1

DirectDrawSurface auf anderes Surface zeichnen

  Alt 16. Dez 2020, 18:55
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 !

PS: Kann man hier irgentwo seinen Namen (Nickname) ändern?
Felix
  Mit Zitat antworten Zitat
eccothedelphi
(Gast)

n/a Beiträge
 
#2

AW: DirectDrawSurface auf anderes Surface zeichnen

  Alt 16. Dez 2020, 22:33
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.097 Beiträge
 
Delphi 12 Athens
 
#3

AW: DirectDrawSurface auf anderes Surface zeichnen

  Alt 17. Dez 2020, 00:28
A: Wo knallt es?
Der Debugger sollte ja die Zeile nennen.

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



X: Unten auf "Kontakt" und schreiben, dass man dich doch bitte umbenennen möge.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Pflaumi
Pflaumi

Registriert seit: 21. Mai 2019
Ort: Reichenschwand
36 Beiträge
 
Delphi 7 Professional
 
#4

AW: DirectDrawSurface auf anderes Surface zeichnen

  Alt 17. Dez 2020, 08:24
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.
Felix
  Mit Zitat antworten Zitat
Benutzerbild von Pflaumi
Pflaumi

Registriert seit: 21. Mai 2019
Ort: Reichenschwand
36 Beiträge
 
Delphi 7 Professional
 
#5

AW: DirectDrawSurface auf anderes Surface zeichnen

  Alt 18. Dez 2020, 18:46
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
Felix
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 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