<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>'GDI Quality' Thread RSS Feed</title>
    <link>http://www.programmersheaven.com/</link>
    <description>Contains the latest posts from the thread 'GDI Quality' posted on the 'ASP.NET' forum at Programmer's Heaven.</description>
    <language>en</language>
    <copyright>Copyright 2009 Programmers Heaven</copyright>
    <pubDate>Sat, 21 Nov 2009 11:57:48 -0700</pubDate>
    <lastBuildDate>Sat, 21 Nov 2009 11:57:48 -0700</lastBuildDate>
    <generator>Argotic Syndication Framework 2007.3.0.1, http://www.codeplex.com/Argotic</generator>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <ttl>360</ttl>
    <image>
      <url>http://www.programmersheaven.com/images/ph.gif</url>
      <title>Programmers Heaven</title>
      <link>http://www.programmersheaven.com/</link>
      <width>88</width>
      <height>31</height>
    </image>
    <item>
      <title>GDI Quality</title>
      <link>http://www.programmersheaven.com/mb/ASPNET/389220/389220/gdi-quality/</link>
      <description>This is really frustrating. I produced some graphs using GDI and vb.net and on the screen they look fine. When you print them off on a black and white printer they look fine BUT on a colour printer the quality is really bad. you can see lines in the colours which is just not acceptable..&lt;br /&gt;
&lt;br /&gt;
I have included the sample code below. I have tried changing to bmp, png etc and it makes not difference.. what am I missing ?.. i can send a copy of the picture produced if anyone can help or you can just copy the code and try running it..&lt;br /&gt;
&lt;br /&gt;
Thanks&lt;br /&gt;
&lt;br /&gt;
Peter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----- Default.aspx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br /&gt;
&amp;lt;head runat="server"&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----- Default.aspx.vb&lt;br /&gt;
&lt;br /&gt;
Imports System.Configuration&lt;br /&gt;
Imports System.Drawing.Printing&lt;br /&gt;
Imports System.Drawing&lt;br /&gt;
Imports System.Drawing.Imaging&lt;br /&gt;
&lt;br /&gt;
Partial Class _Default&lt;br /&gt;
    Inherits System.Web.UI.Page&lt;br /&gt;
&lt;br /&gt;
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load&lt;br /&gt;
&lt;br /&gt;
        Dim brshObj As SolidBrush = New SolidBrush(Color.White)&lt;br /&gt;
        Dim new_font As New Font("Tahoma", 6)&lt;br /&gt;
        Dim x, y, i As Integer&lt;br /&gt;
        Dim MTmonths(12) As String&lt;br /&gt;
        Dim iloop, rec, lastx, lasty1, lasty2 As Integer&lt;br /&gt;
        Dim starty, endy, ydiv, stepdiv, yaxis As Double&lt;br /&gt;
        Dim j&lt;br /&gt;
&lt;br /&gt;
        Dim allMonths As String = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec"&lt;br /&gt;
        Dim monthNames(12) As String&lt;br /&gt;
        monthNames = Split(allMonths, ",")&lt;br /&gt;
&lt;br /&gt;
        Dim LY_Yield(12) As Double&lt;br /&gt;
        Dim TY_Yield(12) As Double&lt;br /&gt;
        Dim TYield As String = "20.42,18,15.6,17.22,17.31,19.14,16.52,18.25,18.52
,0,0,0"&lt;br /&gt;
        Dim LYield As String = "22.16,20.59,16.72,17.3,18.35,18.24,19.24,19.62,17
.62,16.56,14.53,16.08"&lt;br /&gt;
        Dim sTYield(13) As String&lt;br /&gt;
        Dim sLYield(13) As String&lt;br /&gt;
        sTYield = Split(TYield, ",")&lt;br /&gt;
        sLYield = Split(LYield, ",")&lt;br /&gt;
&lt;br /&gt;
        For rec = 1 To 12&lt;br /&gt;
            LY_Yield(rec) = CDbl(sLYield(rec - 1))&lt;br /&gt;
            TY_Yield(rec) = CDbl(sTYield(rec - 1))&lt;br /&gt;
            MTmonths(rec) = monthNames(rec - 1)&lt;br /&gt;
        Next&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Dim maxy As Double&lt;br /&gt;
        Dim miny As Double&lt;br /&gt;
        Dim m1, m2 As Double&lt;br /&gt;
        maxy = -9999999&lt;br /&gt;
        miny = 9999999&lt;br /&gt;
&lt;br /&gt;
        For iloop = 1 To 12&lt;br /&gt;
            m1 = TY_Yield(iloop) : m2 = LY_Yield(iloop)&lt;br /&gt;
            If m1 &amp;amp;lt;&amp;amp;gt; -9999 And m1 &amp;amp;lt;&amp;amp;gt; 0 Then&lt;br /&gt;
                If m1 &amp;amp;gt; maxy Then maxy = m1&lt;br /&gt;
                If m1 &amp;amp;lt; miny Then miny = m1&lt;br /&gt;
            End If&lt;br /&gt;
            If m2 &amp;amp;lt;&amp;amp;gt; -9999 And m2 &amp;amp;lt;&amp;amp;gt; 0 Then&lt;br /&gt;
                If m2 &amp;amp;gt; maxy Then maxy = m2&lt;br /&gt;
                If m2 &amp;amp;lt; miny Then miny = m2&lt;br /&gt;
            End If&lt;br /&gt;
        Next&lt;br /&gt;
&lt;br /&gt;
        Dim objBitmap As Bitmap = New Bitmap(340, 230)&lt;br /&gt;
        Dim objGraphics As Graphics = Graphics.FromImage(objBitmap)&lt;br /&gt;
        Dim bmpNew As Bitmap = New Bitmap(objBitmap.Width, objBitmap.Height)&lt;br /&gt;
        'bmpNew.SetResolution(280, 220)&lt;br /&gt;
        Dim oGraphic As Graphics = Graphics.FromImage(bmpNew)&lt;br /&gt;
        Dim rectObjB As Rectangle = New Rectangle(-50, -50, objBitmap.Width + 50, objBitmap.Height + 50)&lt;br /&gt;
        Dim rectObj As Rectangle = New Rectangle(0, 0, objBitmap.Width, objBitmap.Height)&lt;br /&gt;
        oGraphic.SmoothingMode = Drawing2D.SmoothingMode.HighQuality&lt;br /&gt;
        oGraphic.FillRectangle(brshObj, rectObj)&lt;br /&gt;
&lt;br /&gt;
        Dim pn1 As Pen = New Pen(Color.Red, 1)&lt;br /&gt;
        Dim pn2 As Pen = New Pen(Color.RoyalBlue, 3)&lt;br /&gt;
        Dim pnax As Pen = New Pen(Color.Black, 2)&lt;br /&gt;
&lt;br /&gt;
        oGraphic.DrawLine(pnax, 20, 210, 340, 210)&lt;br /&gt;
        oGraphic.DrawLine(pnax, 20, 210, 20, 20)&lt;br /&gt;
        objBitmap.RotateFlip(RotateFlipType.RotateNoneFlip
Y)&lt;br /&gt;
        Dim TextBrsh As Brush = New SolidBrush(Color.Black)&lt;br /&gt;
        Dim TextFont As New Font("Arial", 8, FontStyle.Regular)&lt;br /&gt;
&lt;br /&gt;
        For i = 1 To 12&lt;br /&gt;
            x = ((i / 12) * 300) - 5&lt;br /&gt;
            oGraphic.TextRenderingHint = Text.TextRenderingHint.AntiAliasGridFit&lt;br /&gt;
            oGraphic.DrawString(MTmonths(i), TextFont, TextBrsh, x, 210)&lt;br /&gt;
        Next&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        Dim aPoints(11) As Point&lt;br /&gt;
        Dim bPoints(11) As Point&lt;br /&gt;
&lt;br /&gt;
        endy = maxy + (maxy * 20 / 100) : starty = miny - (miny * 20 / 100) : endy = Math.Floor(endy + 0.5) : starty = Math.Floor(starty + 0.5) : stepdiv = Math.Round((endy - starty) / 8, 0)&lt;br /&gt;
        ydiv = endy - starty&lt;br /&gt;
&lt;br /&gt;
        For yaxis = starty To endy Step stepdiv&lt;br /&gt;
            y = (-1 * ((yaxis - endy) / ydiv * 190))&lt;br /&gt;
            oGraphic.DrawLine(Pens.Gray, 20, y + 20, 340, y + 20)&lt;br /&gt;
            oGraphic.TextRenderingHint = Text.TextRenderingHint.AntiAliasGridFit&lt;br /&gt;
            oGraphic.DrawString(yaxis, TextFont, TextBrsh, 1, y + 10)&lt;br /&gt;
        Next&lt;br /&gt;
&lt;br /&gt;
        i = 1 : j = endy : lastx = 20 : lasty1 = 200 : lasty2 = 200&lt;br /&gt;
&lt;br /&gt;
        For iloop = 1 To 12&lt;br /&gt;
            x = (i / 12) * 300&lt;br /&gt;
            j = LY_Yield(iloop)&lt;br /&gt;
            If j &amp;amp;lt;&amp;amp;gt; -9999 Then&lt;br /&gt;
                y = (-1 * ((j - endy) / ydiv * 190))&lt;br /&gt;
            Else&lt;br /&gt;
                y = lasty1&lt;br /&gt;
                x = lastx&lt;br /&gt;
            End If&lt;br /&gt;
            aPoints(i - 1).X = x : aPoints(i - 1).Y = y&lt;br /&gt;
            lasty1 = y&lt;br /&gt;
&lt;br /&gt;
            j = TY_Yield(iloop)&lt;br /&gt;
            If j &amp;amp;lt;&amp;amp;gt; -9999 Then&lt;br /&gt;
                y = (-1 * ((j - endy) / ydiv * 190))&lt;br /&gt;
            Else&lt;br /&gt;
                y = lasty2&lt;br /&gt;
                x = lastx&lt;br /&gt;
            End If&lt;br /&gt;
            bPoints(i - 1).X = x : bPoints(i - 1).Y = y&lt;br /&gt;
            lasty2 = y&lt;br /&gt;
            i = i + 1&lt;br /&gt;
            lastx = x&lt;br /&gt;
        Next&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        oGraphic.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        ' new compression technique&lt;br /&gt;
        Dim Codec, JPEGCodec As System.Drawing.Imaging.ImageCodecInfo&lt;br /&gt;
        Dim EncParams As System.Drawing.Imaging.EncoderParameters&lt;br /&gt;
        Dim QualitySetting As Long = 100L&lt;br /&gt;
        For Each Codec In System.Drawing.Imaging.ImageCodecInfo.GetImageEnco
ders&lt;br /&gt;
            If Codec.MimeType = "image/jpeg" Then&lt;br /&gt;
                JPEGCodec = Codec&lt;br /&gt;
                Exit For&lt;br /&gt;
            End If&lt;br /&gt;
        Next&lt;br /&gt;
        EncParams = New System.Drawing.Imaging.EncoderParameters(1)&lt;br /&gt;
        EncParams.Param(0) = New System.Drawing.Imaging.EncoderParameter(System.Dra
wing.Imaging.Encoder.Quality, QualitySetting)&lt;br /&gt;
        'MyImage.Save(ImageFileName, JPEGCodec, EncParams)&lt;br /&gt;
&lt;br /&gt;
        'Dim offset As Integer = 1&lt;br /&gt;
        'Dim segments As Integer = 3&lt;br /&gt;
        'Dim tension As Single = 0.5F&lt;br /&gt;
        'oGraphic.DrawCurve(pn1, aPoints, offset, segments, tension)&lt;br /&gt;
        'oGraphic.DrawCurve(pn2, bPoints, offset, segments, tension)&lt;br /&gt;
&lt;br /&gt;
        oGraphic.DrawCurve(pn1, aPoints, 0.5F)&lt;br /&gt;
        oGraphic.DrawCurve(pn2, bPoints, 0.5F)&lt;br /&gt;
        objBitmap = bmpNew&lt;br /&gt;
        objBitmap.Save(Server.MapPath("~/GT1.jpg"), ImageFormat.Jpeg)&lt;br /&gt;
        objBitmap.Save(Server.MapPath("~/GT2.jpg"), JPEGCodec, EncParams)&lt;br /&gt;
        objBitmap.Dispose()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    End Sub&lt;br /&gt;
End Class&lt;br /&gt;</description>
      <guid isPermaLink="true">http://www.programmersheaven.com/mb/ASPNET/389220/389220/gdi-quality/</guid>
      <pubDate>Wed, 15 Apr 2009 07:02:48 -0700</pubDate>
      <category>ASP.NET</category>
    </item>
  </channel>
</rss>