AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DrawCell im eigenen Thread?

Ein Thema von BeBored · begonnen am 27. Aug 2008 · letzter Beitrag vom 28. Aug 2008
Antwort Antwort
Benutzerbild von BeBored
BeBored

Registriert seit: 2. Jun 2004
Ort: Cremlingen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

DrawCell im eigenen Thread?

  Alt 27. Aug 2008, 16:53
Hallo Leute,

ich bastel gerade ein Gleisbild und nutze dazu ein DrawGrid. Aus einer Datenbank lade ich alle Elemente in ein Array das ich dann auf deren Art prüfe (z.B. Gerade, WeicheObenLink usw...).

Wenn ich nun ein Element hinzufüge, wird das in die Datenbank gespeichert und das Array neu gefüllt... aber das Zeichnen des DrawGrid belegt die gesammte Anwendung und mein Rechner ist ziemlich fix... was passiert dann auf einer lahmen Kröte?

Nun würde ich gerne das DrawCell in einen Thread packen, damit die Anwendung benutzbar bleibt aber ein
Delphi-Quellcode:
// GleisMalen ist eine Prozedur mit If Abfragen nach der Art und dem jeweiligen Zeichnen des Elements
ThreadMalen.Synchronize(ThreadMalen.GleisMalen);
in der DrawCell Methode bringt leider nichts.. aber was Threads angeht bin ich absoluter Neuling.
Ist es überhaubt möglich das ganze in einen eigenen Thread zu packen oder bin ich hier sogar auf einem völlig falschem weg?
Matthias
Wer nichts wagt der nichts verliert.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: DrawCell im eigenen Thread?

  Alt 27. Aug 2008, 16:59
Du musst immer in dem Thread zeichnen, dem das Fenster gehört. Eine Möglichkeit, trotzdem mehrere Threads zu benutzen, besteht darin, in einem Thread auf ein Bitmap zu zeichnen und dieses im Besitzerthread im DrawCell mit BitBlt zu kopieren.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von BeBored
BeBored

Registriert seit: 2. Jun 2004
Ort: Cremlingen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: DrawCell im eigenen Thread?

  Alt 27. Aug 2008, 17:02
Ich zeichne direkt in die Zelle mit MoveTo und LineTo, da fällt ein Bitmap weg
Matthias
Wer nichts wagt der nichts verliert.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: DrawCell im eigenen Thread?

  Alt 27. Aug 2008, 17:03
Du kannst aber die Zeichenarbeiten im Voraus auf ein Bitmap ausführen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von BeBored
BeBored

Registriert seit: 2. Jun 2004
Ort: Cremlingen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: DrawCell im eigenen Thread?

  Alt 27. Aug 2008, 17:07
Das klingt doch gut... ich werde das mal versuchen, danke dir
Matthias
Wer nichts wagt der nichts verliert.
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: DrawCell im eigenen Thread?

  Alt 27. Aug 2008, 17:11
wenn du ein vorgefertigtes JPEG / PNG oder was auch immer
laden würdest, bräuchtest du noch nicht mal einen Thread,
du müsstest nur 1x alle Gleistypen generieren und speichern.

Gruß
Jürgen
Jürgen Höfs
  Mit Zitat antworten Zitat
Benutzerbild von BeBored
BeBored

Registriert seit: 2. Jun 2004
Ort: Cremlingen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: DrawCell im eigenen Thread?

  Alt 27. Aug 2008, 19:05
Ich habe mir jetzt ein Array mit TBitmaps erstellt, in dem ich die einzelnen Arten drinnen habe.
Jetzt versuche ich innerhalb meiner Klasse die größe der Bitmaps zu setzen.. aber immer gibt er eine Exception aus.
Mache ich da irgendwas falsch? Die Bitmaps müßen doch erst eine definiert Größe haben denke ich.
Liegt es vielleicht daran das ich das innerhalb einer Klasse mache? Unter private habe ich das Array definiert mit MyBitmaps: array of TBitmap; und im Constructor der Klasse will ich die größe der Bitmaps setzen mit
Delphi-Quellcode:
SetLength(MyBitmaps, 20);
for I := Low(MyBitmaps) to High(MyBitmaps) do
  MyBitmaps[i].SetSize(20,10);
aber irgendwie will der nicht so wie ich
Matthias
Wer nichts wagt der nichts verliert.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: DrawCell im eigenen Thread?

  Alt 27. Aug 2008, 19:15
Du musst die Bitmaps noch erzeugen:
MyBitmaps[i] := TBitmap.Create;
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von BeBored
BeBored

Registriert seit: 2. Jun 2004
Ort: Cremlingen
90 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: DrawCell im eigenen Thread?

  Alt 28. Aug 2008, 12:13
Genau das wars, ich danke dir
Matthias
Wer nichts wagt der nichts verliert.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:28 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