Hallo!
Ich hab nu wieder ein hoff. kleines Problemchen.
Ich habe mir ein kleines Programm gebaut welches mir auf einer PictureBox ein Schriftzeichen in einer frei wählbaren Schriftart ausgibt.
Nun kann ich mit den AForge-Bibliotheken das eingrenzende Rechteck des Zeichens finden, ausschneiden und neu zeichnen etc.
Mein Problem ist nun wenn ich zB. den Buchstaben "J" darstelle hat dieser zB. eine Höhe von 75 Pixel und eine Breite von 20 Pixel.
Da ich jedes Zeichen zur Weiterverarbeitung auf ein einheitliches Maß bringen will, wie zB. eine Max. Höhe bzw. Max. Breite von 50 Pixel,
hab ich versucht nun von der Höhe die Differenz zu 50 abzuziehen! Das wären also 25 Pixel..
..nun muss ich aber, um die Proportion zu wahren, in der Breite ja auch 25 Pixel abziehen!
Das führt dazu das der Buchstabe "J" Spiegelverkehrt dargestellt wird, also mit -5 Pixel..
Wie kann ich denn meine Bitmaps skalieren ohne solchen Effekt?
Hab jetzt schon an Vektorgrafiken gedacht!?
Dies ist meine "Scale-Funktion":
Spoiler anzeigen
*Topic verschoben*
Ich hab nu wieder ein hoff. kleines Problemchen.
Ich habe mir ein kleines Programm gebaut welches mir auf einer PictureBox ein Schriftzeichen in einer frei wählbaren Schriftart ausgibt.
Nun kann ich mit den AForge-Bibliotheken das eingrenzende Rechteck des Zeichens finden, ausschneiden und neu zeichnen etc.
Mein Problem ist nun wenn ich zB. den Buchstaben "J" darstelle hat dieser zB. eine Höhe von 75 Pixel und eine Breite von 20 Pixel.
Da ich jedes Zeichen zur Weiterverarbeitung auf ein einheitliches Maß bringen will, wie zB. eine Max. Höhe bzw. Max. Breite von 50 Pixel,
hab ich versucht nun von der Höhe die Differenz zu 50 abzuziehen! Das wären also 25 Pixel..
..nun muss ich aber, um die Proportion zu wahren, in der Breite ja auch 25 Pixel abziehen!
Das führt dazu das der Buchstabe "J" Spiegelverkehrt dargestellt wird, also mit -5 Pixel..
Wie kann ich denn meine Bitmaps skalieren ohne solchen Effekt?
Hab jetzt schon an Vektorgrafiken gedacht!?
Dies ist meine "Scale-Funktion":
VB.NET-Quellcode
- Private Function _scale(ByVal _rectBitmap As Bitmap, ByVal _desiredMaxBlob As Integer, ByVal _desiredMaxBitmap As Integer) As Rectangle
- Dim _scaledRectangle As Rectangle
- Dim _diff As Integer = Nothing
- If _rectBitmap.Width > _rectBitmap.Height Then 'breiter als hoch
- _diff = _desiredMaxBlob - _rectBitmap.Width
- Else 'höher als breit
- _diff = _desiredMaxBlob - _rectBitmap.Height
- End If
- Debug.WriteLine(_diff)
- Debug.WriteLine(_rectBitmap.Width + _diff & "x" & _rectBitmap.Height + _diff)
- _scaledRectangle.Width = _rectBitmap.Width + _diff
- _scaledRectangle.Height = _rectBitmap.Height + _diff
- _scaledRectangle.X = CInt((_desiredMaxBitmap / 2) - (_scaledRectangle.Width / 2))
- _scaledRectangle.Y = CInt((_desiredMaxBitmap / 2) - (_scaledRectangle.Height / 2))
- Return _scaledRectangle
- End Function
*Topic verschoben*
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()