AGB  ·  Datenschutz  ·  Impressum  







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

paintbox Probleme

Ein Thema von theomega · begonnen am 18. Okt 2002 · letzter Beitrag vom 19. Okt 2002
Antwort Antwort
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#1

paintbox Probleme

  Alt 18. Okt 2002, 18:09
Hallo
ich habe in meinem Programm eine Paintbox. Wegen der Geschwindikeit will ich nicht auf TImage umsteigen. Nur zwei gravierende Nachteile von TPaintbox:
1. Wird nicht neugezeichent, wenn etwas davor war
2. Kann man nicht speichern

Wie kann ich beide Misstände beheben?

Danke

TO
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2
  Alt 18. Okt 2002, 18:25
Du zeichnest in ein Hintergrundbitmap, dass du dann im OnPaint-Ereignis auf die Canvas der PaintBox kopierst.

Code:
bmp.Canvas.Rectangle(10, 10, 200, 200);
PaintBox1.Repaint; // Hintergrundbitmap auf Paintbox kopieren

OnPaint:
PaintBox1.Canvas.Draw(0, 0, bmp);
Das Bitmap kannst du ja ganz einfach speichern.
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#3
  Alt 18. Okt 2002, 18:40
könntest du mir das einmal ein bischen genauer erklären? Ich habe also auf meinem Form eine Paintbox (=paintbox1), und füge dann ein TImage (=image1) (richtig? Oder was ist ein Bitmap?) hinzu! Und in wessen OnPaint Event muß jetzt was hinein?
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#4
  Alt 19. Okt 2002, 17:38
Warum kann mir keiner das erklären?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 19. Okt 2002, 17:44
Moin The Omega,

wenn ich das richtig verstanden habe, meint jbg, dass das Bild in eine TBitmap gezeichnet, und dann im OnPaint des Formulares auf dem sich die PaintBox befindet neu gezeichnet werden soll, denn dieses Ereignis müsste ausgelöst werden, wenn es neu gezeichnet werden muss, also wenn es, z.B. verdeckt war und jetzt nicht mehr verdeckt ist.
(ich hab's jetzt nicht ausprobiert, aber so würde ich es mir erklären)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#6
  Alt 19. Okt 2002, 17:58
Oki, hat gefunzt, jetzt wird es aber ganz misteriös: ich will das Image auch speichern. Geht ja auch, nur das gespeicherte Bild, ich breiter als das Image ist und enthält in dem zu großen Teil meinen Desktop:
hier ein Beispiel:


Das ist kein Screenshot, sondern ein Bild, dass mit image1.savetofile gespeichert wurde!

[edit=Daniel B.]Bild gelöscht. Grosse Bilder bitte nur als Anhang, nicht zusätzlich im Posting angeben. Danke.[/edit]
Miniaturansicht angehängter Grafiken
75_1035043118.jpg  
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7
  Alt 19. Okt 2002, 18:35
Wie hast du denn das Bitmap erzeugt, was zeichnest du in das Bitmap? Oder ist Image vielleicht ein TImage (vom Namen her)?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 19. Okt 2002, 18:37
Moin The Omega,

wie hast Du denn genau gespeichert. TImage.SaveToFile kennt zumindest mein D5 nicht.

Grundsätzlich kann ich es mir aber nur so erklären, dass die Grösse des Images halt zu breit ist.
Vergleich' doch mal, wie gross Image1.Picture.Width ist, und wie gross es sein soll.
Vielleicht kannst Du Dir damit behelfen, dass Du Image1.Picture.Bitmap.Width anpasst, oder aber Du verwendest gleich den von jbg vorgeschlagenen Weg, die Graphik auf ein Bitmap zu zeichnen (Typ TBitmap), und dann über PaintBox.Canvas.CopyRect auf die Paintbox zeichnest.
Dann könntest Du beim Speichern schlicht die Bitmap speichern, und die sollte ja stimmen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#9
  Alt 19. Okt 2002, 19:15
TImage (=image1) und TPaintbox (paintbox1) sind haargenau gleich groß, weil sie beide mein Forumlar mit alClient bedeken. Gespiechert habe ich mit
Code:
image1.Picture.SaveToFile(savedialog1.FileName);
  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 18:32 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