AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi dynamische Bitmaps (TImage) auf festen "Untergrund"
Thema durchsuchen
Ansicht
Themen-Optionen

dynamische Bitmaps (TImage) auf festen "Untergrund"

Ein Thema von delphin · begonnen am 29. Aug 2005 · letzter Beitrag vom 29. Aug 2005
Antwort Antwort
delphin

Registriert seit: 21. Aug 2003
Ort: Chemnitz
29 Beiträge
 
Delphi 7 Professional
 
#1

dynamische Bitmaps (TImage) auf festen "Untergrund"

  Alt 29. Aug 2005, 20:59
Hallo,

ich lade zur Programmlaufzeit mehrere kleine Bitmaps in TImages, die ich momentan als Parent des Hauptformulars "Form1" abgeleitet und demnach auch dort abgelegt habe.

Delphi-Quellcode:
ImageArray[i]:=TImage.Create(Self);
ImageArray[i].Parent := Form1;
ImageArray[i].Autosize:=true;
ImageArray[i].Picture.LoadFromFile('Bild'+IntToStr(i)+'.bmp');
ImageArray[i].Transparent:=true;
ImageArray[i].tag:=i;
Das Erkennen und Verschieben der Bildchen zur Laufzeit klappt problemlos über:

Delphi-Quellcode:
iImageArray[i].OnMouseDown:= MyMouseDown;
iImageArray[i].OnMouseMove:= MyMouseMove;
iImageArray[i].OnMouseUp:= MyMouseUp;
Verschiebe ich aber eines der Bilder außerhalb der Form, scrollt mir Windows automatisch den oberen bzw. linken Fensterrand - und damit auch meine Werkzeugleiste (Panel) - außerhalb des sichtbaren Bereiches. Wie kann ich das verhindern ?

Ich suche also ein "Zeichenfeld", dass mir meine Bitmaps nur in einem festen Bereich darstellt und auch scrollt, ohne die ganz Form zu "zerstören".
Wenn ich meine Bitmaps auf ein ExtraPanel zeichne:
ImageArray[i].Parent := ExtraPanel; funktioniert die Sache zwar wie gewünscht, aber der Bildaufbau dauert viel zu lang und flackert ungemein beim Verschieben eines Imagefeldes.

Wer kann da helfen? Schonmal Danke im Voraus!
Gruß Gerd
  Mit Zitat antworten Zitat
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#2

Re: dynamische Bitmaps (TImage) auf festen "Untergrund&

  Alt 29. Aug 2005, 21:18
Zitat:
aber der Bildaufbau dauert viel zu lang und flackert ungemein beim Verschieben eines Imagefeldes.
schon mal DoubleBuffered auf true gesetzt? könnte evtl. helfen

gruss
urbanbruhin
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: dynamische Bitmaps (TImage) auf festen "Untergrund&

  Alt 29. Aug 2005, 21:48
Du benutzt die Komponente TImage zum Anzeigen - diese ist aber einfach nicht zum Verschieben gedacht und entwickelt. Die Lösung ist, die Unterobjekte auf eine gemeinsame, in der Größe feste Canvas zu bringen, z.B. die der Form. Die Unterobjekte (bzw. ihr Bitmap) speicherst du in der Klasse TBitmap (der Name legt es schon nahe). Im OnPaint der Form kopierst du nun jedes Bitmap per TCanvas.Draw auf deren Canvas. Zusammen mit DoubleBuffered sollte es kein Flimmern mehr geben, Bitmapteile über außerhalb der Form-Canvas werden einfach abgeschnitten.

=> Hier im Forum suchenOffScreenBitmap
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
delphin

Registriert seit: 21. Aug 2003
Ort: Chemnitz
29 Beiträge
 
Delphi 7 Professional
 
#4

Re: dynamische Bitmaps (TImage) auf festen "Untergrund&

  Alt 29. Aug 2005, 22:14
Also erstmal Danke für Eure Tipps.

Zum Tipp von urbanbruhin:
habe im OnCreate-Ereignis des Forumlars

Panel1.DoubleBuffered:=true; // verhindert flackeren beim Grafikverschieben gesetzt und es flackert deutlich weniger.

Zu der Antwort von Khabarakh:
Ich denke nach dem vielen Tests des heutigen Tages, dass das Panel doch der richtige Untergrund zum Darstellen, Erkennen und Verschieben einzelner Image-Objecte ist.

Ich möchte - und zwar nur in einem festen Teil meines Formulars - ein Gesamtbild darstellen, was aus mehreren Einzelbildern (Images) besteht, die ich einzeln erkennen und verschieben will.

Wenn ich die einzelnen Teile (Images) z.B. in eine Paintbox ??? über BitBlt() kopiere, dann geht das wohl schneller, aber wie erkenne ich dann im fertigen Gesamtbild das Einzelobjekt wieder ?

Denn wenn ich die Sache richtig verstanden habe, kann eine Paintbox auch kein Parent von TImage werden und demzufolge würde auf ihr auch nicht die "Objekterkennung" der einzelnen Bilderpuzzel (Images) funktionieren, oder etwa doch ? :gruebel:
  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 22:35 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