AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Suche Konzept: Bild mit unbekannter Größe
Thema durchsuchen
Ansicht
Themen-Optionen

Suche Konzept: Bild mit unbekannter Größe

Ein Thema von Cubysoft · begonnen am 14. Jul 2015 · letzter Beitrag vom 16. Jul 2015
Antwort Antwort
Seite 2 von 2     12   
Cubysoft

Registriert seit: 5. Sep 2014
Ort: Ludwigshafen
76 Beiträge
 
Delphi XE8 Professional
 
#11

AW: Suche Konzept: Bild mit unbekannter Größe

  Alt 15. Jul 2015, 00:43
Ja, das hat alles bis jetzt nicht wirklich geholfen. Ich meine funktionieren würde die eine Variante ja, gefallen tut sie mir aber nicht. Gibt es wirklich keine Möglichkeit auf ein größeres Medium zu zeichnen und dann die Größe zu verändern? Wir eine TBitmap beim resizen geleert? Wenn nicht kann ich ja einfach ne 1000x1000 px große Bitmap erzeugen und am Ende verkleinern
Tobias
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#12

AW: Suche Konzept: Bild mit unbekannter Größe

  Alt 15. Jul 2015, 00:58
Ich verstehe Dich nicht so ganz, aber man könnte es so, wie Bjoerk es gemeint hat, machen. Man muß das, was Du da reinzeichnest, zu irgendwas relativ setzen. In der Schule was das -glaub ich- "Verhältnisrechnung".
Man kann natürlich auch das Bitmap skalieren, das ist aber nicht so einfach, wie man denkt. Dazu benötigst Du auch eine Engine.
Graphics32 hat ein TImage, das skalieren kann.

Ansonsten mußt Du Dein Problem näher beschreiben.

Gute Nacht!
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: Suche Konzept: Bild mit unbekannter Größe

  Alt 15. Jul 2015, 12:57
Bei einem Bitmap, muss man vorher auch die Größe angeben, sonst habe ich zwar auf dem Canvas gemalt, aber in der Bitmap steht nichts drin.

Somit hat man also mit dem Bitmap nichts gewonnen.

Ein simple Alternative besteht (wie schon gesagt) die Zeichenroutinen ein zusammenzustellen, dabei stellt man eben auch die tatsächliche Größe fest und dann wird das Zeil auf diese Größe eingestellt und die Zeichenroutinen angewendet.

Hier ein ganz billiges Beispiel:
Delphi-Quellcode:
unit Form.MainForm;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;

type
  TForm1 = class( TForm )
    Button1: TButton;
    Button2: TButton;
    PaintBox1: TPaintBox;
    ScrollBox1: TScrollBox;
    Panel1: TPanel;
    procedure Button1Click( Sender: TObject );
    procedure Button2Click( Sender: TObject );
    procedure PaintBox1Paint( Sender: TObject );
  private
    FPaintBoxProc: TProc<TCanvas>;
    procedure SetPaintBoxProc( const Value: TProc<TCanvas> );
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click( Sender: TObject );
var
  LProc: TProc<TCanvas>;
begin
  // Zeichenroutine zusammenstellen
  LProc :=
    procedure( Canvas: TCanvas )
    begin
      Canvas.Brush.Color := clRed;
      Canvas.Ellipse( 100, 100, 400, 400 );
      Canvas.Brush.Color := clBlue;
      Canvas.Rectangle( 350, 400, 800, 700 );
    end;

  // PaintBox Größe setzen
  PaintBox1.Width := 800;
  PaintBox1.Height := 700;

  // Zeichenroutine für die PaintBox setzen
  SetPaintBoxProc( LProc );
end;

procedure TForm1.Button2Click( Sender: TObject );
begin
  SetPaintBoxProc( nil );
end;

procedure TForm1.PaintBox1Paint( Sender: TObject );
begin
  // Hier wird die Zeichenroutine einfach ausgeführt
  if Assigned( FPaintBoxProc ) then
    FPaintBoxProc( ( Sender as TPaintBox ).Canvas );
end;

procedure TForm1.SetPaintBoxProc( const Value: TProc<TCanvas> );
begin
  FPaintBoxProc := Value;
  if not Assigned( Value ) then
  begin
    PaintBox1.Height := 0;
    PaintBox1.Width := 0;
  end;
  PaintBox1.Invalidate;
end;

end.
Ein kleiner Hinweis sei noch gegeben:
Delphi-Quellcode:
type
  TProcUtil = class
    class function Combine<T>( Collection: TEnumerable < TProc < T >> ): TProc<T>; overload;
    class function Combine<T>( Values: TArray < TProc < T >> ): TProc<T>; overload;
  end;

{ TProcUtil }

class function TProcUtil.Combine<T>( Values: TArray < TProc < T >> ): TProc<T>;
begin
  Result :=
    procedure( Arg: T )
    var
      LProc: TProc<T>;
    begin
      for LProc in Values do
        LProc( Arg );
    end;
end;

class function TProcUtil.Combine<T>( Collection: TEnumerable < TProc < T >> ): TProc<T>;
begin
  Result := Combine<T>( Collection.ToArray );
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (15. Jul 2015 um 13:09 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#14

AW: Suche Konzept: Bild mit unbekannter Größe

  Alt 16. Jul 2015, 07:49
Entweder Du machst es wie beschrieben, oder Du nimmst Dir ein Bitmap mit maximaler Größe, zeichnest dein Zeugs rein, merkst Dir dabei X/Y Min/Max und blittest (muh? "BitBlt") zum Schluß den Bereich in dein Ziel.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:15 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