Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

C--

Alter Hase

  • »C--« ist der Autor dieses Themas

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

1

31.07.2009, 10:30

[C#] Wie kann ich Bitmaps vergrößern/verkleinern

Hallo, ich habe mal ne Frage: Wie kann ich in .NET(C#) Bilder(Pixelbasiert: Bitmap, keine Vektorgrafik :!: ) so vergrößern/verkleinern, dass das Bild gestreckt/geschrupft wird, sodass zum Beispiel 1Pixel aus neem 100x100 Bild, 4 Pixel auf nem 200x200 Bild werden, und umgekehrt, natürlich mit anderen Bildmaßen, auch so "krumme" Berechnungen wie z.B. 741x945 :arrow: 214x311.
Wie mache ich das , dass ich beim verkleinern weiss, welche Pixel ich weglassen muss, und beim vergrößern auch weiss, welche Pixel hinzugefügt werden müssen?

Ich suche schon seit Stunden nach einer Möglichkeit, ich wäre froh, wenn mir jemand helfen könnte.

Vielen Danke im Voraus.

mfg C--
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

2

31.07.2009, 10:47

Ist die Frage, ob dich das Verfahren an sich interessiert, oder nur das Ergebnis.
Also um ein Sprite zu laden und skaliert zu Rendern gibt es eine Menge Möglichkeiten, allerdings benutze ich selber kein C#. Aber XNA oder so sollte das können.
Lieber dumm fragen, als dumm bleiben!

3

31.07.2009, 10:49

C# hat Klassen für so etwas (den Namen habe ich jedoch vergessen).
Wenn du es selber machen willst, musst du einfach interpolieren.

In der einfachsten Form errechnest du einfach wie viele Pixel zwischen den Uhrsprungspixeln dazu kommen, bzw. wie viele zusammengefasst werden.

Dann berechnest du die Durchschnittsfarbe der zusammengefassten Pixel, bzw. berechnest die Zwischenwerte der neuen Pixel.

C--

Alter Hase

  • »C--« ist der Autor dieses Themas

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

4

31.07.2009, 10:56

@Jonathan_Klein: Ich wollte nicht XNA nutzen.

@chriss: wie sollte das ungefähr im Code aussehen, ich bin ziemlich verwirrt :?
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

5

31.07.2009, 12:01

Willst du die Grafik wirklich vergrößern oder willst du einfach so einen Blockeffekt haben? Oder willst du das Bild vielleicht nur vergrößert zeichnen?

C--

Alter Hase

  • »C--« ist der Autor dieses Themas

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

6

31.07.2009, 12:47

@David_pb: Ja, ich will die Grafik wirklich vergrößern, um sie dann z.B. vergrößert abzuspeichern.
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

31.07.2009, 12:54

http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspx

-> http://msdn.microsoft.com/en-us/library/0cbhe98f.aspx
--> http://msdn.microsoft.com/en-us/library/0wh0045z.aspx
---> http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.save.aspx

;)

C--

Alter Hase

  • »C--« ist der Autor dieses Themas

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

8

31.07.2009, 13:19

Danke dot, System.Drawing.Bitmap und System.Drawing.Bitmap.Save kannte ich schon, dachte bloß immer, dass der Konstruktor(Image, Size) nur der Bitmap ein weißes Stück an der rechten und an der unteren Seite hinzufügt beim vergrößern, und dass beim verkleinern der Rest abgeschnitten wird, auch wenn ich so was mal selber proggen wollte, habe ich jetzt schon mal eine einfache Lösung, vielen Dank an alle.
:D
mfg C--
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

31.07.2009, 13:49

Zitat von »"C--"«

Danke dot, System.Drawing.Bitmap und System.Drawing.Bitmap.Save kannte ich schon, dachte bloß immer, dass der Konstruktor(Image, Size) nur der Bitmap ein weißes Stück an der rechten und an der unteren Seite hinzufügt beim vergrößern, und dass beim verkleinern der Rest abgeschnitten wird


Ein Blick in die Doku hätte dir die Erleuchtung bringen können:

Zitat von »"msdn"«


Initializes a new instance of the Bitmap class from the specified existing image, scaled to the specified size.

C--

Alter Hase

  • »C--« ist der Autor dieses Themas

Beiträge: 465

Beruf: Schüler

  • Private Nachricht senden

10

31.07.2009, 13:53

@david_pb: Hast ja recht *seufz*
Ich spreche: C/C++, C++/CLI C#, VBA, VB.NET, Delphi, (HTML, Javascript(bisschen))
------------------------------------------------------------
Hier steht eventuell schon in ein paar Monaten der Link zu meiner Homepage!

return 0;
;)

Werbeanzeige