AGB  ·  Datenschutz  ·  Impressum  







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

Problem Graphic32 und Paintbox

Ein Thema von BrunoT · begonnen am 7. Jun 2005 · letzter Beitrag vom 7. Jun 2005
Antwort Antwort
Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#1

Problem Graphic32 und Paintbox

  Alt 7. Jun 2005, 09:13
Hallo DP'ler,


ich habe bisher mit Paintbox und Buffer- Bitmap gearbeitet und mit dem OnPaint- Ereignis über BtlBlt das Bitmap auf die Paintbox kopiert.
Das funktionierte mit
Delphi-Quellcode:
procedure THauptform.LadenClick(Sender: TObject);
var
  JpBitmap: TJPEGImage;
begin
  JpBitmap := TJPEGImage.Create;
  JpBitmap.LoadFromFile(Bildname);
  Bitmap.Assign(JpBitmap); //Buffer- Bitmap
  JpBitmap.Free;
  LeinwandPaint(self); //Neuzeichnen
end;
...

procedure THauptform.LeinwandPaint(Sender: TObject);
begin
  BitBlt(Leinwand.Canvas.Handle, 0, 0, Bitmap.Width,
    Bitmap.Height, Bitmap.Canvas.Handle, 0, 0, SRCCOPY);
end;
Mit dem OnPaint-Ereignis habe ich die Paintbox neu gezeichnet, wenn nötig.


Die Paintbox ist in einer Scrollbox.

=========================================
Umstieg auf Graphic32



Nun besitzt ja Paintbox32 ein eigenes Buffer- Bitmap aber wenn ich ein Bild in das Buffer- Bitmap lade
und dann z.B. scrolle ist die Paintbox schwarz (warum eigentlich nicht weiss???).
Ein OnPaint-Ereignis fehlt hier.
Wenn ich aber die Paintbox32 mit folgenden Befehlen fülle, kann ich scrollen !?!

Delphi-Quellcode:
  Leinwand.Buffer.Canvas.Brush.Color := clwhite;
  Leinwand.Buffer.Canvas.Polygon([Point(0, 0), Point(0, Leinwand.Height),
    Point(Leinwand.Width, Leinwand.Height), Point(Leinwand.Width, 0)]);
  for i := 1 to 20 do //Testgitter
  With Leinwand.Buffer.Canvas Do
  Begin
    MoveTo(I*100,1);
    LineTo(I*100,2336);
  end;
  for i := 1 to 40 do
  With Leinwand.Buffer.Canvas Do
  Begin
    MoveTo(1,I*100);
    LineTo(1656,I*100);
  end;
  LeinwandPaint(self); //rufe ich auf, um Bitmap auf die Paintbox32 zu zeichnen
end;
Frage:
1. Warum gibt es kein OnPaint-Ereignis?
2. Sollte ich lieber Image32 anstelle der Paintbox nehmen? (Flackert das Bild dann wieder?)
3. Wie kann ich das Bild scrollen, ohne das Bereiche, die vorher ausserhalb lagen, schwarz werden?

mfg

BrunoT
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#2

Re: Problem Graphic32 und Paintbox

  Alt 7. Jun 2005, 09:14
der buffer wird internbenützt...

versuchs dochmal mit dem ".Bitmap" ansetlle vom ".Buffer"


öhm ich persönlich verwende ja anstelle der paintbox lieber son TImage32
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#3

Re: Problem Graphic32 und Paintbox

  Alt 7. Jun 2005, 09:32
Hallo barf00s,

danke für die schnelle Antwort, aber es gibt kein Paintbox32.Bitmap.
Das einzige TBitmap32 ist eben der Paintbox32.Buffer.

@TImage32
Das Problem ist, ich habe vorher mit TImage gearbeitet und hatte Flackererscheinungen, wenn ich Teile davon neu gezeichnet habe.
Deshalb war ich ja auf TPaintbox mit Bitmap als Buffer umgestiegen. Was ja auch super geklappt hat.
Nun bin ich über Hinweise zur Graphic32- Bibliothek gestossen und wollte diese natürlich nutzen. (soll ja schneller sein).

mfg

BrunoT
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#4

Re: Problem Graphic32 und Paintbox

  Alt 7. Jun 2005, 09:41
ach PaintBox hat kein Bitmap ^^ nagut
wie gesagt ich habs immer mitnem TImage32 gemacht

mein krams aufnen Bitmap32 gemalt und des dann auf den canvas/bitmap vom TImage32 ge"draw"ed

so gehts beinem std TImage/Bitmap auch (bzw mach ichs so)
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Problem Graphic32 und Paintbox

  Alt 7. Jun 2005, 14:03
Die Paintbox32 hat ein Ereignis "OnPaintBuffer". Das klingt doch vielversprechend oder? Allerdings habe ich die Paintbox bisher nicht benutzt, da ich dafür keinen Grund hatte. Denn: Beim Image32 flackert nix, da es von Hause aus doublebuffered ist. Um ein Neuzeichnen zu verhindern während man mehrere Änderungen am TImage32.Bitmap macht, und nur ein mal neuzuzeichnen schaue dir mal die Methoden:
TImage32.BeginUpdate;
TImage32.EndUpdate;
TImage32.Changed;
an.

Zum scrollen jedoch mache ich mir nie die Mühe das selbst zu programmieren, sondern nehme gleich ein TImgView32


Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

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

Re: Problem Graphic32 und Paintbox

  Alt 7. Jun 2005, 14:34
Genau, dafür ist TImgView32 da.
Für Animationen mache ich es so:
  • TPaintbox32, Algin = alClient
  • Direkt mit TPaintbox32.Buffer arbeiten
  • Am Ende des Frames TPaintbox32.Flush aufrufen

PS: Wenn du die Geschwindigkeit von GR32 genießen willst, solltest du nicht die TBitmap.TCanvas-Methoden benutzen, sonst wird natürlich nichts schneller .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#7

Re: Problem Graphic32 und Paintbox

  Alt 7. Jun 2005, 15:14
Danke für eure Mühe bisher,

@Khabarakh,dizzy

schaut euch doch mal bitte das Beispiel an.

Links Paintbox32 rechts Paintbox. Das Bild veschwindet beim Scrollen links, die Grafik nicht.

Ich wills ja nur verstehen.

TImgView32 habe ich noch nicht getestet.

mfg

BrunoT

He ich hänge noch 'nen Screenshot dran
Miniaturansicht angehängter Grafiken
bild1_669.jpg   screen_281.jpg  
Angehängte Dateien
Dateityp: zip graphic_837.zip (9,3 KB, 20x aufgerufen)
Dateityp: zip project1_120.zip (277,7 KB, 22x aufgerufen)
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  Mit Zitat antworten Zitat
Benutzerbild von BrunoT
BrunoT

Registriert seit: 23. Jan 2003
Ort: Sandbeiendorf
360 Beiträge
 
Delphi 8 Professional
 
#8

Re: Problem Graphic32 und Paintbox

  Alt 7. Jun 2005, 15:37
THX moch mal

ich habe auf TImgView32 umgestellt. (gewusst hätte ich es schon gern warum das Bild verschwindet und die Grafik nicht).

mfg

BrunoT
Holger

EDV- Ende der Vernunft
Meine Calcedit-Kompo
  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 08:51 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