DotNetMagic的一个Bug

    一个文字颠倒的Bug(对中文而言),在最新的3.0.1中依然存在,看图:

    理想的情况当然是这样:

    花了些时间看了看,发现是在DrawReverseString函数中出的问题,修改如下:

        public static void DrawReverseString(Graphics g,
                                             String drawText,
                                             Font drawFont,
                                             Rectangle drawRect,
                                             Brush drawBrush,
                                             StringFormat drawFormat)
        {
            GraphicsContainer container = g.BeginContainer();

            // The text will be rotated around the origin (0,0) and so needs moving
            // back into position by using a transform
            g.TranslateTransform(drawRect.Top, drawRect.Left + drawRect.Height);

            // Rotate the text by 180 degress to reverse the direction
            g.RotateTransform(-90);

   int tmp = drawRect.Width;
   drawRect.Width = drawRect.Height;
   drawRect.Height = tmp;
            // Draw the string as normal and let then transforms do the work
            g.DrawString(drawText, drawFont, drawBrush, drawRect, drawFormat);

            g.EndContainer(container);
        }

    另外,需要去掉DrawColumn函数中的设置的一个StringFormatFlags:

            format.FormatFlags = //StringFormatFlags.DirectionVertical |
                                 StringFormatFlags.NoClip |
                                 StringFormatFlags.NoWrap;
    
    不过修改之后没有详细测试,不知道在其它地方是否会出问题。
    感谢木头指出这个Bug。

posted on 2005-07-17 11:09  sPhinX  阅读(1347)  评论(3编辑  收藏  举报

导航