用颜色填充矩形的背景与字体颜色都有一些小变化。
为什么会这样呢?
怎么办?

解决方案 »

  1.   

    通过验证,是在DrawString(...)方法上出现了失真。
    g.DrawString(str,titleFont,redBrush,pointX,pointY);
    ---------
    这句话画出的字符串颜色失真了,中间有好多"白点点.."
      

  2.   

    是存成文件失真,还是bitmap对象失真?
      

  3.   

    存成文件失真,
    我是画一个图,然后显示在form上面。
    结果在DrawString的时候,字体失真。
    字体周边出现很多"颗粒"物。
      

  4.   

    //以下是我的代三
    public static MemoryStream DrawWorkflow(string instanceBH,string WorkFlowID,string strTitle)
    {
    Font f=new Font("Arial",10,FontStyle.Bold);
    System.Drawing.Bitmap image=new Bitmap(WFWidth,WFHeihgt,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
    Graphics g=Graphics.FromImage(image); //g.TextRenderingHint =  System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
    //g.CompositingQuality = CompositingQuality.HighQuality; 
    //g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
    g.SmoothingMode = SmoothingMode.HighQuality;  g.Clear(Color.FromArgb(74,176,225));
    //

    DataTable dtTrack = CRM.Sys.Bll.WorkFlow.DrawBll.GetWfTrack(instanceBH);
    //画背景
    DrawBack(g);
    //画标题*********这里出现了失真
    DrawTitle(g,strTitle);
    ...........
    System.IO.MemoryStream ms=new System.IO.MemoryStream();
    image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
    g.Dispose();
    image.Dispose();
    return ms;
    }//画标题
    private static void DrawTitle(Graphics g,string strTitle)
    {
    Font titleFont=new Font("Arial",10,FontStyle.Bold);
    Brush titleBrush = new SolidBrush(Color.FromArgb(240,254,96));
    string str = strTitle;
    float titleLen = 50+15*(str.Length-10);
    g.DrawString(str,titleFont,titleBrush,(WFWidth-titleLen)/2,20);
    titleBrush.Dispose();
    titleFont.Dispose(); }
      

  5.   

    如果是保存文件导致的失真,加上EncoderParameters试试
    Bitmap bit = new Bitmap( 100, 100 );
    Graphics g = Graphics.FromImage( bit );
    g.DrawString( "test", btnGet.Font, Brushes.Green, 0f, 0f );
    EncoderParameters paras = new EncoderParameters( 1 );
    paras.Param[0] = new EncoderParameter( System.Drawing.Imaging.Encoder.Quality,
    new long[] { 100 } );ImageCodecInfo[] infoArray1 = ImageCodecInfo.GetImageEncoders();
    bit.Save( @"D:\Test.jpg", infoArray1[1], paras );
      

  6.   

    谢谢 Knight94(愚翁) ,"色斑"确实得到了解决
      

  7.   

    谢谢   Knight94(愚翁)   , "色斑 "确实得到了解决,√√√√