Schelchte Schrift mit transparentem Hintergrund

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von mikeb69.

    Schelchte Schrift mit transparentem Hintergrund

    Hallo,

    ich will in ein Bild (Hintergrund Transparent) einen Text reinschreiben.
    Der Text sieht aber nur gut aus, wenn ich den Hintergrund nicht Transparent wähle.

    Hier das Ausgangsbild:


    Hier der Code, welcher das Ergebnis erzeugt:

    VB.NET-Quellcode

    1. Dim b As New Bitmap(500, 50)
    2. Using g As Graphics = Graphics.FromImage(b)
    3. g.Clear(Color.Transparent)
    4. g.DrawImage(Image.FromFile(System.Web.HttpContext.Current.Server.MapPath("~/Images/vorlage_timezone_plus.png")), New Point(3, 3))
    5. g.DrawString("Sie befinden sich in der Zeitzone:" & Environment.NewLine & retRss.SelectSingleNode("/rss/channel/item/userTimeZone").InnerText, New Font("Arial", 10), New SolidBrush(Color.Black), New Point(50, 10))
    6. End Using


    Hier das Ergebnis (Bild mit Text und transparentem Hintergrund):


    Was muss ich ändern um eine schöne Schrift auch bei transparentem Hintergrund zu bekommen ?

    Edit:
    Da das Problem inzwischen gelöst werden konnte und die Seite meiner Webanwendung korrigiert wurde, wird das vormals schlechte Bild jetzt so angezeigt wie ich es haben wollte !

    Gruss

    mikeb69

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „mikeb69“ ()

    Hallo,

    @Samus,
    das erste Bild enthält bereits einen transparenten Hintergrund.
    Daran kann es nicht liegen.

    @Panavia,
    das versuch ich mal - danke.

    @m9898,
    weil das Bild als Responce zurückgegeben wird.
    Da hilft mir ein Label nicht weiter.
    Ob es eine Webanwendung ist oder nicht ist hier nebensächlich - denke ich.

    Warum soll php besser sein ?

    Vielleicht hab ich ein Problem mit dem DPI ?

    GRuss

    mikeb69

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mikeb69“ ()

    Hi,

    mit dem TextRenderingHint auf AntiAlias mal rumgespielt?
    msdn.microsoft.com/en-us/libra…cs.textrenderinghint.aspx
    msdn.microsoft.com/en-us/library/ssazt6bs%28v=VS.80%29.aspx

    Man kann Bitmaps mit Bitmap.MakeTransparent() komplett transparent machen. Alternativ kann man auch Graphics.Clear() benutzen, wenn man den CompositingMode richtig eingestellt hat.

    Edit:
    Eventuell mal schauen, ob man den CompositingMode auf "SourceOver" stellen muss.
    msdn.microsoft.com/en-us/libra…ingmode%28v=VS.80%29.aspx
    msdn.microsoft.com/en-us/libra…ingmode%28v=VS.80%29.aspx

    Edit2:
    ich sehe gerade, dass dein Ausgangsbild kleiner ist, als das Bild in deinem gezeichneten Bild. das liegt daran, dass Windows ine andere DPI verwendet als dein Grafikprogramm. Entweder du gibst ein genaues Rectangle mit den Maßen des Ausgangsbildes an oder du stellst die DPI auf den Windows-Standardwert von 96 PPI.

    nikeee
    Von meinem iPhone gesendet

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „nikeee13“ ()

    Hallo nikeee13,

    das mit antialias hat geholfen.
    Die DPI hatte ich lokal mittlerweile schon korrigiert.

    Der Vollständigkeit halber der funktionierende Code

    VB.NET-Quellcode

    1. Dim b As New Bitmap(500, 40)
    2. b.SetResolution(72, 72)
    3. Using g As Graphics = Graphics.FromImage(b)
    4. g.Clear(Color.Transparent)
    5. g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
    6. g.DrawImage(Image.FromFile(System.Web.HttpContext.Current.Server.MapPath("~/Images/vorlage_timezone_plus.png")), New Point(3, 3))
    7. g.DrawString("Sie befinden sich in der Zeitzone:" & Environment.NewLine & retRss.SelectSingleNode("/rss/channel/item/userTimeZone").InnerText, New Font("Arial", 14), New SolidBrush(Color.Black), New Point(50, 5))
    8. End Using


    Danke für deine Hilfe.

    Gruss

    mikeb69

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mikeb69“ ()