C# Fadenkreuz in einem Bild?

1 Antwort

Genau. Es ist nicht in der Mitte, weil es nun mal eine feste Größe hat und du es damit einfach abschneidest. Probiere es mal mit:

Bild zum Beitrag

Damit wird das Bild so resized, dass es nicht einfach abgeschnitten wird, sondern der Inhalt sich auch anpasst

"g" steht hier für das Graphics Object

Ein einfacher resize, wie du den machst, der sollte so funktionieren:

Bild zum Beitrag

Das Orangene ist das Fadenkreuz. Grün ist die aktuelle Größe, als es gezeichnet wurde und Rot ist die Größe, als es skaliert wurde, mit width und height. Deshalb am besten einmal den Bitmap Konstruktor damit aufrufen und eine neue Größe mitgeben. Dieser sollte das dann automatisch neu berechnen, sodass auch der Inhalt an der Frame des Bildes passt

 - (Technik, PC, programmieren)  - (Technik, PC, programmieren)
MegaMann1234 
Fragesteller
 17.06.2022, 08:33

Danke du hast recht gehabt. Man muss die neue Größe in dem Konstruktor mit angeben. Bescheuerter hätte man es nicht machen können. Warum zur Hölle macht man nicht eine Methode keine Ahnung Resize oder sowas

0
FaTech  17.06.2022, 08:38
@MegaMann1234

Das Bild muss komplett neu erstellt werden. Einfach verkleinern ist da nicht. Deshalb wird ein neuer Konstruktor benutzt, da es neu muss. Du kannst es aber für dich auslagern. Als ich viel mit Bitmaps und Graphics Objekten arbeiten musste, habe ich mir dafür extra eine kleine DLL geschrieben, die ich extern pflegen konnte und somit immer die besten Methoden bereitgestellt hatte. Muss nicht zwingend eine DLL sein, kann auch eine extra Klasse in neuer Datei sein. Ich hatte mich nur für eine DLL entschieden gehabt

0
MegaMann1234 
Fragesteller
 17.06.2022, 08:40
@FaTech

Kann das sein das ich noch irgendwie die Differenz berechnen muss?

0
MegaMann1234 
Fragesteller
 17.06.2022, 08:38

Dennoch gibt es ein Problem. Und zwar habe ich Width und Height als Variablen zur Positionsverschiebung angelegt. Wenn ich jetzt das Kreuz verschiebe und die Resolution ändere. Ist es immer noch nicht dort, wo es bei der anderen Resolution stand?

0
FaTech  17.06.2022, 08:44
@MegaMann1234

Wenn du die Position änderst auf die width, so wie du es beschreibst, dann ist x auf width und somit außerhalb des Bereichs. Bei height genau so. width ist doch dann schon das maximum an position

0
MegaMann1234 
Fragesteller
 17.06.2022, 08:47
@FaTech

Du verstehst mich falsch. Im Bild siehst du den Code. Da ist Vertical eine zusätzlich Eigenschaft und Horizontal eine Eigenschaft. Diese haben nur den Sinn, dass man das Fadenkreuz durch das Additionsverfahren nach oben und unten sowie rechts und links verschieben kann. Problem ist aber doch jetzt wenn das Bild kleiner ist, dann wird die Eigenschaft Vertical und Horizontal gleich bleiben und somit ist das Fadenkreuz wieder verzogen. Irgendwie die Idee wie ich das Berechne?

0
FaTech  17.06.2022, 08:49
@MegaMann1234

Wenn du das Bild verkleinerst, tust du das doch nach der änderung der Position oder? Dann sollte automatisch das Pfadenkreuz mit resized werden. Deshalb nutzt du ja den ctor und nicht width und height

0
MegaMann1234 
Fragesteller
 17.06.2022, 08:58
@FaTech

Das Fadenkreuz wird permanent neu gezeichnet. Ich nehme die Bilder von einer Webcam. Daher die Resolutionsänderung und etc. Also jedes mal wird das Fadenkreuz pro Frame neu gezeichnet. Wenn jetzt aber die Resolution geändert wird und das Fadenkreuz ist verschoben, dann ist nicht auf dem gleichen Punkt, wie bei der anderen Resolution.

0
FaTech  17.06.2022, 09:07
@MegaMann1234

Du nutzt auch den ctor dafür? Hast du vielleicht mal ein Beispiel oder so, wo man genau sieht, was passiert?

0
MegaMann1234 
Fragesteller
 17.06.2022, 10:37
@FaTech

Ey keine Ahnung wie das funktionieren soll. Ich will doch nur zwei Linien verschieben und die sollen immer an der gleichen Stelle stehen, wenn das Bild sich von der Pixelanzahl ändert. Aber das funktioniert einfach nicht

0
FaTech  17.06.2022, 11:20
@MegaMann1234

Achso, meintest du, dass die sich verschieben sollen, wenn das Bild schon klein ist? Dann musst du halt die Position width & height auch berechnen, die du zum umpositionieren

0
MegaMann1234 
Fragesteller
 17.06.2022, 11:23
@FaTech

Ja aber wie berechnet man das denn? Ich hätte ja gesagt den alten - durch die neue Resolution. Aber dann ist das wieder zu viel.

0