AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi stretch-Informationen in TGraphic-Object
Thema durchsuchen
Ansicht
Themen-Optionen

stretch-Informationen in TGraphic-Object

Ein Thema von flippinho · begonnen am 31. Dez 2009 · letzter Beitrag vom 3. Jan 2010
Antwort Antwort
flippinho

Registriert seit: 3. Mai 2009
7 Beiträge
 
Delphi 5 Enterprise
 
#1

stretch-Informationen in TGraphic-Object

  Alt 31. Dez 2009, 10:46
hallo,

ich habe folgendes Problem:
ich möchte eine TGraphic-Komponente schreiben, mit deren Hilfe ich SVG-Grafiken in einem TImage-Objekt anzeigen kann. Das funktioniert soweit auch ganz gut allerdings, allerdings finde ich auf TGraphic-Ebene keinen Zugriff auf die Stretchinformationen des beinhaltenden TImage (oder TPaintbox oder was auch immer)-Objekt. Diese Information benötige ich aber um zu entscheiden, ob die SVG-Grafik hoch oder runterskaliert werden soll oder in Original-Größe angezeigt werden soll.

Kann mir jemand helfen, wie ich in der Draw-Funktion von TGraphic an die Informationen gelange, ob das beinhaltende TImage-Objekt gestretched gezeichnet werden soll? Vielleicht ist diese Information ja irgendwie in den Parametern der Funktion "TGraphic.Draw(ACanvas: TCanvas; const Rect: TRect)" verborgen.

Vielen Dank für Eure Hilfe,
flippinho


Delphi-Quellcode:
procedure TRSVG_Graphic.Draw(ACanvas: TCanvas; const Rect: TRect);
begin
   if FExportPRsvgHandle <> nil then begin
      Export_rsvg_handle_render_cairo(FExportPRsvgHandle,
    ACanvas.handle,
         point(Rect.Right-Rect.Left,Rect.Bottom-Rect.Top),
         true ); // Stretch ja oder nein ??
   end;   
end;
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

Re: stretch-Informationen in TGraphic-Object

  Alt 31. Dez 2009, 11:35
Ich denke, du musst TGraphics um diese Eigenschaft erweitern. In der TGraphics weißt du doch gar nichts von TImage und daher auch nicht von deren Strech-Eigenschaft. Wenn du den Source der VCL hast kannst du ja schauen, was TImage intern macht und wo sich die Strech-Eigenschaft überall auswirkt.

Ich könnte mir da gut vorstellen, dass bei der Draw-Methode nicht die original Ausmaße des Bildes übergeben werden, sondern die Größe des TImage selbst.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
flippinho

Registriert seit: 3. Mai 2009
7 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: stretch-Informationen in TGraphic-Object

  Alt 3. Jan 2010, 11:19
Hallo,

danke für die Antwort S.h.a.r.k,
ich glaube ich habe mittlerweile die Lösung zu dem Problem:
An dem Parameter "Rect" der "TGraphic.Draw(ACanvas: TCanvas; const Rect: TRect)"-Funktion kann man anscheinend erkennen, ob das TImage gestretched gezeichnet werden soll; Wenn das TImage nicht gestretched gezeichnet werden soll, entspricht die Größe von "Rect" anscheinend immer der Orginalgrösse der zu zeichnenden Grafikdatei.

falls ich nicht irgendwas übersehen habe denke ich ist das Problem gelöst.

schöne Grüsse,
flippinho





Delphi-Quellcode:
procedure TRSVG_Graphic.Draw(ACanvas: TCanvas; const Rect: TRect);
var
   lStretch : Boolean;
begin
   if (Rect.Right-Rect.Left = GetWidth) and
      (Rect.Bottom-Rect.Top = GetHeight) then begin
      lStretch := false;
   end else begin
      lStretch := true;
   end;

   if FExportPRsvgHandle <> nil then begin
      Export_rsvg_handle_render_cairo(FExportPRsvgHandle,
            ACanvas.handle,
             point(Rect.Right-Rect.Left,Rect.Bottom-Rect.Top),
             lStretch );
   end;
   
end;
  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 23:13 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