drawstring_drawstring bag

       接下来,我将针对drawstring的问题给出一些建议和解答,希望对大家有所帮助。现在,我们就来探讨一下drawstring的话题。

1.C# Graphics.DrawString加背景色

2.g.drawString如何换行输出?

3.GDI+中用DrawString()在制定RectF范围内绘制字符串,如何实现它不额外绘制一个空白区域

4.如何控制drawstring时的字符间距?如何旋转字体

drawstring_drawstring bag

C# Graphics.DrawString加背景色

       你在绘制字符串之前可以使用Graphics的MeasureString方法测量它的尺寸再绘制一个相应大小的矩形就行了,如下

        Graphics g = this.CreateGraphics();

        Font font = new Font("宋体", 9f);

        PointF pointF = new PointF(10, 10);

        SizeF sizeF = g.MeasureString("Hello World!", font);

        g.FillRectangle(Brushes.White, new RectangleF(pointF, sizeF));

        g.DrawString("Hello World!", font, Brushes.Black, pointF);

        g.Dispose();

        font.Dispose();

g.drawString如何换行输出?

       drawString用得多的是这个方法public abstract void drawString(String str,int x,int y)

       该方法有三个参数,后面两个表示字符串绘制的坐标位置,而你只传递了一个参数,当然就找不到你写的那个方法了

GDI+中用DrawString()在制定RectF范围内绘制字符串,如何实现它不额外绘制一个空白区域

       我也正在找g.drawString的换行输出方法,貌似只有靠后面的坐标设定来体现换行效果了。

g.drawString("****",20,40);

       g.drawString("****",20,80);

       g.drawString("****",20,120);

       g.drawString("",x,y);就当作xy坐标,自己设定。

如何控制drawstring时的字符间距?如何旋转字体

       那你要计算你画的字符串的长度和宽度,且需根据字体、型号大小、字体样式(居中还是靠左)。这些来完成。且还要注意有无换行符号\n和\r。

       以下是GDI代码,供你参考。

       void CalculateTextSize()

        {

        if ( m_bAutoCalText && ::IsWindow(m_hWnd) )

        {

        // Calculate text size.

        CClientDC dc(m_hWnd);

        dc.SelectFont(m_Font);

        dc.SetTextAlign(m_uTextStyle);

        CSize szText;

        CString strText =_T("");

        int nHeight = 0;

        int nWidth = 0;

        // Get max text length and width.

        for (int i = 0; i < m_strText.GetLength(); i++)

        {

        strText += m_strText[i];

        if (m_strText[i] == '\n' ||m_strText[i] == '\r')

        {

        dc.GetTextExtent(strText,strText.GetLength(), &szText);

        nHeight += szText.cy;

        nWidth = nWidth > szText.cx ? nWidth :szText.cx;

        strText = _T("");

        }

        }

        if (strText.GetLength() > 0)

        {

        dc.GetTextExtent(strText,strText.GetLength(), &szText);

        nHeight += szText.cy;

        nWidth = nWidth > szText.cx ?nWidth : szText.cx;

        strText = _T("");

        }

        ResizeClient(nWidth, nHeight);

        }

        Invalidate();

        }

       下面的代码显示围绕一点旋转的文字 for (float angle = 0; angle < 360; angle += 45) { g.ResetTransform(); g.TranslateTransform(rect.Width / 2, rect.Height / 2); g.RotateTransform(angle); g.DrawString("我的测试绘图", font, brush

       好了,今天关于“drawstring”的话题就到这里了。希望大家通过我的介绍对“drawstring”有更全面、深入的认识,并且能够在今后的学习中更好地运用所学知识。