Toon posts:

[VB.NET] drawString TextRendering / printen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil een formulier maken dat uitgeprint kan worden.
Eerst wordt er een bitmap aangemaakt, waarop getekend wordt dmv een Graphics object.
Nu moet er ook tekst op komen...

In lettertype 10 ziet dat er goed uit zonder antialiassing. Als ik echter een font 20 of groter wil gebruiken, ziet de tekst er ONGELOOFLIJK blocky uit. Alsof er iets geschreven werd in font 10 en dan eventjes met MSpaint werd uitvergroot...

Op scherm kan ik dat corrigeren door antialiassing (AA) aan te zetten, contrast bij te regelen en nog wat dingetjes!
Maar als je iets afdrukt op papier met AA, ziet dat er MEGA lelijk uit natuurlijk.

Mijn vraag: waarom zijn die letters niet zoals je ze in Word ziet, op lettertype 20 ? Lettertypes zijn toch vectorieel, dus dat zou helemaal niet blokkerig mogen zijn :(

Vergeet ik iets te doen of ... ?

code:
1
2
3
4
5
6
7
Dim f As Font = New Font(New FontFamily("Arial"), 20, FontStyle.Bold, GraphicsUnit.Pixel)
'g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
'g.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
'g.TextContrast = 0
'g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
'g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
g.DrawString("ABCDEFGH", f, New SolidBrush(Color.Black), 0,0, StringFormat.GenericTypographic)

Verwijderd

Topicstarter
niemand die hierover iets weet?

  • user109731
  • Registratie: Maart 2004
  • Niet online
Vreemd. Onderstaande code word bij mij gewoon goed weergegeven op zowel scherm als papier. En dit is dan zelfs met text-size 70.
Visual Basic .NET:
1
2
3
4
5
6
    Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Dim g As Graphics = e.Graphics

        Dim f As Font = New Font(New FontFamily("Arial"), 70, FontStyle.Bold, GraphicsUnit.Pixel)
        g.DrawString("ABCDEFGH", f, New SolidBrush(Color.Black), 0, 0, StringFormat.GenericTypographic)
    End Sub


Je gebruikt gewoon het Graphics-object van een PrintDocument-control?

[ Voor 6% gewijzigd door user109731 op 12-04-2006 14:16 ]


Verwijderd

Topicstarter
Inderdaad, als ik met e.drawstring werk ziet het er goed uit.

Maar ik doe het op een andere manier. Ik heb een class die een bitmap heeft, daar wordt op getekend en dan wordt die bitmap in de printpage event afgedrukt dmv

e.Graphics.DrawImage(PictureBox1.Image, New PointF(0, 0))


En dan ziet het er niet uit. Ik zal de graphics objecten en de printer en van de bitmap eens vergelijken. Ik heb al gezien dat de printer graphics 600dpi heeft en de bitmap maar 96...