AGB  ·  Datenschutz  ·  Impressum  







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

Paintbox.Canvas.Draw mit Bitmap

Ein Thema von TForm1 · begonnen am 17. Nov 2014 · letzter Beitrag vom 17. Nov 2014
Antwort Antwort
TForm1

Registriert seit: 11. Jan 2014
128 Beiträge
 
FreePascal / Lazarus
 
#1

Paintbox.Canvas.Draw mit Bitmap

  Alt 17. Nov 2014, 17:55
Hallo,
eigentlich sollte es doch nicht so schwer sein, ein Bitmap auf eine Paintbox zu zeichnen, oder?
myPaintbox.Canvas.Draw(0,0, FBitmap) Die Bitmap wird vorher mit FBitmap.LoadFromFile(filepath) geladen, funktioniert alles soweit.
Warum zeichnet er dann kein Bild? Oder sollte man für solche Aktionen lieber die TImage- Komponente verwenden?

PS: Ich habe jetzt das ganze auch mal mit TextOut probiert, auch da zeigt es mir nichts an. Scheint also mehr ein Problem der Paintbox zu sein (oder es ist ein Problem von mir, dass ich das nicht richtig bedienen kann )
Der Fehler sitzt immer vor dem Computer...

Geändert von TForm1 (17. Nov 2014 um 18:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Paintbox.Canvas.Draw mit Bitmap

  Alt 17. Nov 2014, 18:24
WANN zeichnest Du denn?
Du kannst nur in der entsprechenden Ereignisbehandlung zeichnen (OnPaint, wenn ich es noch richtig weiß).

Wenn Du "von außen" irgendwas drauf malst, wird das ggf. wieder von der Komponente selbst mit einer Hintergrundfarbe überschrieben.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
TForm1

Registriert seit: 11. Jan 2014
128 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Paintbox.Canvas.Draw mit Bitmap

  Alt 17. Nov 2014, 18:40
Ah ok, dann wird es daran liegen.
Bislang zeichne ich direkt beim FormCreate, damit soll sozusagen beim Start ein Hintergrundbild auf die Form gezeichnet werden.

Eine Frage: wird die OnPaint methode dann also sozusagen ständig neu aufgerufen?
Der Fehler sitzt immer vor dem Computer...
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Paintbox.Canvas.Draw mit Bitmap

  Alt 17. Nov 2014, 18:54
Wann Windows Deine einzelnen Controls neu zeichnet kannst Du nicht direkt beeinflussen.

Wenn Deine Paintbox gezeichnet wird, wird der Hintergrund gezeichnet und das, was Du in OnPaint veranlasst.

Wenn Du ein statisches Bild darstellen willst wäre ein Image evtl. die bessere Wahl.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
TForm1

Registriert seit: 11. Jan 2014
128 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Paintbox.Canvas.Draw mit Bitmap

  Alt 17. Nov 2014, 19:02
Ich habe mit Absicht eine Paintbox gewählt, da ich später dann noch diverse Symbole (auch als Bitmaps) darauf anzeigen lassen will, welche sich je nachdem verändern. Dazu arbeite ich mich gerade ganz neu in eben genau dieses Thema 2D-Grafiken ein. Wenn nur beim OnPaint etwas gezeichnet wird, wie kann ich dann von Außerhalb in anderen Methoden auf die Paintbox zeichnen lassen? Eigentlich müsste doch jeglicher Aufruf der irgendetwas mit der Bearbeitung der Paintbox zu tun hat, automatisch OnPaint aufrufen?
Der Fehler sitzt immer vor dem Computer...
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Paintbox.Canvas.Draw mit Bitmap

  Alt 17. Nov 2014, 19:16
Du kannst ja jederzeit PaintBox.Paint (bzw. Refresh o.ä.) aufrufen.
In OnPaint kannst Du dann bestimmte Bedingungen und Daten prüfen und danach dynamisch den Inhalt zeichnen.
Du musst aber immer ALLES zeichnen. Irgendwas zum letzten Stand dazu zeichnen geht nicht.

Du kannst natürlich auch extra ein Bitmap nutzen, das Du nach und nach bemalst und dieses regelmäßig in die Paintbox kopierst oder in einem Image darstellen lässt.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
TForm1

Registriert seit: 11. Jan 2014
128 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Paintbox.Canvas.Draw mit Bitmap

  Alt 17. Nov 2014, 19:37
ok, dann ist alles klar. Ich frage mich nur, ob es nicht eine weniger rechenintensive Methode gäbe. Wenn man jetzt fürs Zeichnen mehrere zehntausend Abfragen benötigen würde und die Paintbox 20 mal pro Sekunde neu zeichnen würde, würde man wahrscheinlich an die Grenzen der Möglichkeiten stoßen. Aber dann würde man wahrscheinlich auch keine Paintbox mehr verwenden sondern auf große Grafikbibliotheken (OpenGL) setzen, oder? Naja, bei mir sind es Gott sei dank wahrscheinlich nicht mehr als hundert und 20 mal pro Sekunde brauch ich auch nicht.
Der Fehler sitzt immer vor dem Computer...
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Paintbox.Canvas.Draw mit Bitmap

  Alt 17. Nov 2014, 20:08
Wenn´s schnell gehen muss ist es sicherlich sinnvoll, mehrere Bitmaps zu verwalten und diese dann schnell auf die Zeichenfläche zusammen zu kopieren.

Und wenn es noch schneller gehen soll dann bieten sich zusätzlich schnelle Grafikbibliotheken an.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  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 04:06 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