Zeichnen auf Image mit zoom
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich suche eine Lösung, wie man die Image zoomt und dann drauf zeichnet Das ist meine erste Idee um einen Zoom Faktor zu berechnen Vielleicht hat jemand noch eine bessere Idee Meine Frage ist folgendes : Ist die Berechnung mit Trunc oder Round nicht so gefährlich und nicht genauer, wenn ich beim Zeichnen den berechneten Faktor verwende ?
Delphi-Quellcode:
var
Form1: TForm1; zoom: Real; implementation {$R *.dfm} procedure TForm1.TrackBar1Change(Sender: TObject); begin if Trackbar1.Position > 10 then begin zoom:=Trackbar1.Position-10; end; if Trackbar1.Position = 10 then begin zoom:=1; end; if Trackbar1.Position < 10 then begin zoom:=Trackbar1.Position/10; end; Edit1.Text:= FloatToStr(zoom); //Image1.Stretch:=True; //Image1.autosize:=False; end; procedure TForm1.Button1Click(Sender: TObject); begin Trackbar1.Position:=Trackbar1.Position+2; Image1.Width:=Round(Image1.Picture.Width*zoom); Image1.Height:=Round(Image1.Picture.Height*zoom); end; procedure TForm1.Button2Click(Sender: TObject); begin Trackbar1.Position:=Trackbar1.Position-2; Image1.Width:=Round(Image1.Picture.Width*zoom); Image1.Height:=Round(Image1.Picture.Height*zoom); end; end. |
AW: Zeichnen auf Image mit zoom
Prozentrechnung und die Grafik skalieren, ist das so schwer?
|
AW: Zeichnen auf Image mit zoom
Das kann hier echt nicht dein Ernst sein?! Deine Threads sollte man zunächst alle auf geschlossen setzen und erst deren Inhalt auf Sinn prüfen...
Delphi-Quellcode:
Wie oft willst du Stretch und Autosize denn setzen?!
procedure TForm1.TrackBar1Change(Sender: TObject);
begin if Trackbar1.Position > 10 then begin zoom:=Trackbar1.Position-10; end; if Trackbar1.Position = 10 then begin zoom:=1; end; if Trackbar1.Position < 10 then begin zoom:=Trackbar1.Position/10; end; Edit1.Text:= FloatToStr(zoom); Image1.Stretch:=True; Image1.autosize:=False; end; |
AW: Zeichnen auf Image mit zoom
Zitat:
Aber das ständige skalieren von Bitmap geht die Qualität verloren :( Oder habe ich falsch verstanden ? Zitat:
|
AW: Zeichnen auf Image mit zoom
Meine Güte :wall: Behalt die Originalgrafik im Speicher, erstelle beim Zoomen eine neue aus dem Original, skaliere diese und lade sie ins Image. Wird der Zoomfaktor geändert, wiederholst Du das Ganze. Mit ein bisschen Hirnschmalz kann man darauf kommen, oder?
|
AW: Zeichnen auf Image mit zoom
Wenn man die Bitmap 10x skaliert und dann drauf Texte, Grafiken, ... zeichnet und wieder 10x verkleinert, bleibt die Qualität 100% die selbe ?
|
AW: Zeichnen auf Image mit zoom
Du hast schon gelesen, was ich geschrieben habe? Wenn ja, hast Du es auch verstanden?
|
AW: Zeichnen auf Image mit zoom
Das Quellimage ist ja immer das Selbe.
Wenn du natürlich im das Ergebnis als Quelle der nächsten Skalierung verwendest natürlich nicht. |
AW: Zeichnen auf Image mit zoom
Siehste, Markus hat es gleich kapiert. Manchmal habe ich das Gefühl, ich poste hier in Suaheli :?
|
AW: Zeichnen auf Image mit zoom
Zitat:
|
AW: Zeichnen auf Image mit zoom
Möglicherweise, er lässt sich ja selbst auf Anfrage nicht auf Einzelheiten zu seiner Person aus, obwohl das unter Umständen zumindest ein bisschen zum Verständnis beitragen könnte.
|
AW: Zeichnen auf Image mit zoom
Google "delphi grafik skalieren"
1. Suchergebnis: :) http://www.swissdelphicenter.ch/de/showcode.php?id=1806 |
AW: Zeichnen auf Image mit zoom
Oder man rechnet die prozentuale Größe vorher aus und nimmt dann z.B. mein StretchGraphic.
|
AW: Zeichnen auf Image mit zoom
@Bjoerk:
Wie kannst du nur so etwas kompliziertes, wie mit Google suchen, verlangen :P @DeddyH: Das Wort Suaheli ist veraltet, damit du modern bleibst, musst du jetzt Swahili nutzen :wink: |
AW: Zeichnen auf Image mit zoom
Dann nehm ich halt Mandarin-Chinesisch, ändert aber am Kern nix :roll:
|
AW: Zeichnen auf Image mit zoom
Gäbe es eigentlich für die Forenbetreiber eine Möglichkeit automatisiert Threads direkt bei der Erstellung in einen anderen Bereich zu verschieben?
|
AW: Zeichnen auf Image mit zoom
Zitat:
Der Code aber kann nur vergrössern, da du Integer verwendest für desWidth, desHeight Ich versuche nun deinen Code zu ändern, so dass ich auch den Grafik verkleinern kann
Delphi-Quellcode:
StretchGraphic(Image2.Picture.Graphic,Image1.Picture.Graphic, w*zoom, h*zoom);
|
AW: Zeichnen auf Image mit zoom
Falsch, sein Code kann auch verkleinern.
Der Typ hat hier rein garnichts mit dem Vergrößerungs-/Verkleinerungsfaktor zu tun, da dort nicht der Faktor angegeben wird, aber egal... Wenn man den wichtigen Teil aus seinem Code rausnimmt, die Berechnung des Faktors übergeht und seinen Faktor direkt verwendet, dann ist es schon richtig so. |
AW: Zeichnen auf Image mit zoom
Ich muss die neue Breite und die neue Höhe vorher je nach dem angegeben Faktor berechnen
Ich habe folgendes gemacht :
Delphi-Quellcode:
Also mit dem skalieren ist nun kein Problem
procedure TForm1.Button1Click(Sender: TObject);
var NewWidth, NewHeight : Integer; begin zoom:=StrToFloat(Edit1.Text); NewWidth:=Round(zoom*Image2.Picture.Width); NewHeight:=Round(zoom*Image2.Picture.Height); //StretchGraphic(Image2.Picture.Bitmap,Image1.Picture.Graphic, 300, 300); StretchGraphic(Image2.Picture.Graphic,Image1.Picture.Graphic, NewWidth, NewHeight); end; Nun möchte ich auf dem skalierten Image zeichnen d.h. ich muss auch beim zeichnen alles * zoom multiplizieren zum Beispiel : Image2.canvas.pen.Width:=1*zoom Beim Vergrössern ist kein Problem aber was wäre beim Verkleinern ? Wenn ich das Image 2 mal verkleinern wie breit soll Image.canvas.pen.Width sein ? |
AW: Zeichnen auf Image mit zoom
Zitat:
Wie wäre es, wenn du vor einfach dem verkleiner alles darauf zeichnest? Originalbild > neues Bild mit Draufgezeichnetem > gezoomtes Bild |
AW: Zeichnen auf Image mit zoom
Noch ein mal
beim zoom 100% (kein Zoom) ist beim Zeichnen die canvas.pen.width :=1; also 1 Pixel Nun möchte ich das Bild 50% verkleinern (Faktor=0,5) bei diesem zoom möchte auf das Image zeichnen wie kann ich eine pen.Width von 0,5 pixel eingeben !:-D Beim Vergrössern ist ja kein Problem |
AW: Zeichnen auf Image mit zoom
Was meinst du denn, wie ein halber Pixel so aussieht?
Aber das ist am Ende Kinderkram. Ich manipuliere halbe Bits, das ist Hard-Mode für echte Profis! |
AW: Zeichnen auf Image mit zoom
Liste der Anhänge anzeigen (Anzahl: 1)
Darum ist das Zoomen bei MS Paint beschränkt
nur vergrössern erlaubt |
AW: Zeichnen auf Image mit zoom
Zoomen ist beschränkt, aber Vergrößern erlaubt? Schließt sich das nicht irgendwie aus? Naja, ich habe leider schon ein paar Bier getrunken. Vielleicht kann ich diese komplizierten Zusammenhänge nicht mehr fassen :-D
|
AW: Zeichnen auf Image mit zoom
zoom besteht aus zoom out und zoom in auf Deutsch (verk./verg.)
Zoom out ist bei mspaint nicht möglich. was ist nun nicht klar |
AW: Zeichnen auf Image mit zoom
Wenn du zuweit heraus zoomst, muss der Pixel unsichtbar werden. Wenn er immer angezeigt werden soll musst du eben etwas rechnen und ihn auf dem verkleinerten Bild malen. Er passt dann zwar nicht ganz zu den Abmessungen des Bildes, aber malen kann man ihn trotzdem.
Sorry, habe gerade leider gerade keine Zeit, dir hier ein Programm im Anhang zu Posten, was dein Problem löst. Verdammt. Ich lasse mich hier schon wieder drauf ein. Ich bin erstmal wieder raus. |
AW: Zeichnen auf Image mit zoom
Sorry, aber hier sollte echt erst mal überlegt werden, was denn überhaupt gewollt wird. Vor allem, was Zoom In bzw. Zoom Out in gewissen Situationen bedeutet, ebenso was dann eben der Zustand des Bildes vorher und nachher ist.
Zitat:
Zitat:
Es gibt nur ganze Pixel, außer du benutzt Subpixelrendering, wobei ich dir nicht zumute, dass du das umsetzen kannst. Lass das ganze doch einfach TImage für dich umrechnen und geb dich mit dem Ergebnis zufrieden. Wie mkinzler schon erwähnt hat: du hälst ein Original-Image im Speicher und ein anderes zeigst du entsprechend geändert an. Das im Speicher hat immer die "Zoom-Stufe 1" und du kannst dort dann auch mit einer Pen-Width von 1 zeichnen. Danach machst du ein Assign und fertig ist die Welt. Aber frag jetzt um Gottes will nicht nach Code... |
AW: Zeichnen auf Image mit zoom
Zitat:
|
AW: Zeichnen auf Image mit zoom
Zitat:
die Antwort: Ich nur :-D Bei MS Paint wie ich geschildert habe macht genauso Ich gebe die Möglichkeit bei Zoom nur : 2x, 4x, 6x, 8x, 10x Beim Verkleinern habe ich auch den Trick gefunden um das Image zu verkleinern. Den Code habe ich schon hingelegt. Was aber nicht gelöst ist das Zeichnen auf das Image mit einem Skalierfaktor kleiner als 1 Zitat:
Und zwar das Zeichnen auf das Image mit einem kleinen Skalierfaktor. Ich meine wie wird cancas,pen.width dargestellt ? Meine Idee, was ich gerade tue: Aber Faktor <1 bleibt canvas.pen.width:=1 Und aber Zoom (Faktor) > 1 then
Delphi-Quellcode:
canvas.pen.width:=canvas.pen.width*zoom
|
AW: Zeichnen auf Image mit zoom
Mal ne Frage: Wie meinst du, macht Paint das mit dem Malen, während du das Bild vergrößert hast? - In irgendeinem Tutorial dafür steht:
Zitat:
Kleiner Hinweis: Wenn du ein skaliertes Bild zurück in die Ausgangsgröße skalierst, dann ist es nicht mehr das selbe Bild! Bernhard |
AW: Zeichnen auf Image mit zoom
Zitat:
|
AW: Zeichnen auf Image mit zoom
Es nervt langsam..
Ich meine nicht Thomas sondern alle die welche sich in diversen Threads über ihn ausgelassen haben und trotzdem noch auf seine Fragen Antworten um sich anschließend wiedermal über ihn auslassen und das Thema ins Nirvana (OT) schicken. IGNORIERT seine Threads doch einfach. gruss |
AW: Zeichnen auf Image mit zoom
Zitat:
|
AW: Zeichnen auf Image mit zoom
Zitat:
|
AW: Zeichnen auf Image mit zoom
Vielleicht hilft das ganz ja mal und es beginnt eine Zeit der Einsicht :stupid:
|
AW: Zeichnen auf Image mit zoom
Zitat:
Beim Zoomen erstelle skaliere ich das Image (natürlich vorher Kopie als Sicherung erstellen) und drauf zeichnen In der Tat, es wird nicht nur auf Image1 (das skalierte Bild) sondern auch auf das originale gezeichnet, was ich vordem skalieren entweder in Speicher was @DeddyH vorgeschlagen hat oder (und das mache ich ) in einer externe Form als Kopie d.h. alles was ich beim zoomen auf das skalierte Bild zeichne, wird gleichzeitig am gleichen Zeit auf das originale gezeichnet |
AW: Zeichnen auf Image mit zoom
Dann hast du ganz einfach keine Kopie! Schau dir dies bzgl mal die Methoden Assign() an.
|
AW: Zeichnen auf Image mit zoom
Zitat:
|
AW: Zeichnen auf Image mit zoom
Zitat:
DAS HIER IST EIN FORUM KEINE SEITE FÜR SCHLECHTE LAUNE DIE MAN AN ANDEREN AUSLÄSST! |
AW: Zeichnen auf Image mit zoom
aber auch keine Seite, um Leute zu nerven!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 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