AGB  ·  Datenschutz  ·  Impressum  







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

Canvas.draw problem

Ein Thema von cherry · begonnen am 28. Sep 2006 · letzter Beitrag vom 29. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Canvas.draw problem

  Alt 28. Sep 2006, 14:04
Hi

Bin an ner eigenen Komponente. (abgeleitet von TCustomControl)
Will ne neue Property: Graphic...

Okay so weit so gut.
Zeichne ich das ausgewählte Bild (jpg,bmp..) mit Canvas.draw(0,0,FGraphic)
aud die Komponente(Zu Designzeit), gibts ne Zugriffsverletzung!?

Die Zugriffsverletzung kommt aber erst nach dem das Bild gedrawt wurde. Es wir also
gezeichnet, leider aber eben mit mehreren Zugriffsverletzungen.

Wo kommen die her?
Ne noch besser wie mache ich ne property Bild ( Da kann ich easy n Bild auswählen )
und wie krieg ich dass dann auf die Canvas???

Bitte helft mir... bin im stress...

Danke
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Canvas.draw problem

  Alt 28. Sep 2006, 14:06
Ohne Code kann dir keiner helfen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Canvas.draw problem

  Alt 28. Sep 2006, 14:14
Warum der Fehler kommt, kann man die nur sagen wenn du uns Code lieferst.[Edit wie namenlozer schon schrieb]
Für die Property brauchst du ne private Eigenschaft, einen setter und halt die Property und mußt Draw überladen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#4

Re: Canvas.draw problem

  Alt 28. Sep 2006, 14:19
Okay.. sorry...

hier is grad die Datei.. hängt vielleicht mit was anderem zusammen.
Wie ich mus Draw überladen?! könnte da der Fehler sein
Angehängte Dateien
Dateityp: pas ebutton_656.pas (33,2 KB, 14x aufgerufen)
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#5

Re: Canvas.draw problem

  Alt 28. Sep 2006, 15:00
Bei mir gehts.

Delphi-Quellcode:

procedure TForm1.FormCreate(Sender: TObject);
begin
  EButton := TEButton.Create(nil);
  EButton.Width := 100;
  EButton.Height := 25;
  EButton.Top := 100;
  EButton.Left := 100;
  EButton.Graphic := TBitmap.Create;
  EButton.Graphic.LoadFromFile('bild1.bmp'); // 100x25 Pixel 24bit Bitmap
  EButton.Parent := Form1;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  EButton.Graphic.Free; // evtl. im destructor erledigen / Assigned()
  EButton.Free;
end;
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Canvas.draw problem

  Alt 28. Sep 2006, 15:16
Der Inspektor sollte auch mit der Eigenschaft klarkommen, wenn du die Instanz von Graphic in der Komponente erzeugst und beim Setter der Eigenschaft darauf achtest, dass du dir die interne Instanz nicht überschreibst, sondern dass diese mit Assign() die zugewiesene Instanz inhaltlich übernimmt.

Nochmal im Detail:

1. Im Constructor alle Instanzen von TGraphic erzeugen
Delphi-Quellcode:
FGraphic := TGraphic.Create;
FGraphicOver := TGraphic.Create;
FGraphicDown := TGraphic.Create;
2. In den Setter mit Assign() arbeiten damit du deine Instanz behälst.
Delphi-Quellcode:
procedure TEButton.SetGraphic(const Value: TGraphic);
begin
  FGraphic.Assign(Value);
  RePaint;
end;
3. Im Destruktor die Instanzen wieder freigeben

Bug! Du löscht die Region nach der Übergabe der Region an SetWindowRgn(). Ich empfehle die MSDN zu konsultieren:
Zitat von MSDN: SetWindowRgn():
After a successful call to SetWindowRgn, the system owns the region specified by the region handle hRgn. The system does not make a copy of the region. Thus, you should not make any further function calls with this region handle. In particular, do not delete this region handle. The system deletes the region handle when it no longer needed.
Also unbedingt und sofort das DeleteObject(Rgn) danach rausschmeissen.

Nach weiteren Dingen habe ich nun nicht mehr geschaut...
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#7

Re: Canvas.draw problem

  Alt 29. Sep 2006, 06:45
...
trotzdem, sowie ich das mache gibts beim kompilieren der Komponente folgende Warnungen:

Delphi-Quellcode:
[Warnung] EButton.pas(307): Instanz von 'TGraphic' mit der abstrakten Methode 'TGraphic.LoadFromStream' wird angelegt
[Warnung] EButton.pas(307): Instanz von 'TGraphic' mit der abstrakten Methode 'TGraphic.SaveToStream' wird angelegt
[Warnung] EButton.pas(307): Instanz von 'TGraphic' mit der abstrakten Methode 'TGraphic.LoadFromClipboardFormat' wird angelegt
[Warnung] EButton.pas(307): Instanz von 'TGraphic' mit der abstrakten Methode 'TGraphic.SaveToClipboardFormat' wird angelegt
Natürlich kann ich die Komponente dann auch nicht verwenden. Abstrakter Fehler.
Irgendwie wird das zeuchs nicht richtig created, instanziert...

was ist nun mein Problem?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#8

Re: Canvas.draw problem

  Alt 29. Sep 2006, 08:20
Erstelle statt einer TGraphic-Instanz einfach eine TBitmap-Instanz.

s. mein Beispiel
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#9

Re: Canvas.draw problem

  Alt 29. Sep 2006, 09:14
...
Welche Klasse muss ich da bei uses angeben?
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#10

Re: Canvas.draw problem

  Alt 29. Sep 2006, 09:17
Die Unit Graphics.
Sollte aber schon standardmäßg bei einem neuen Formular drinstehen.
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:57 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