Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#垂直打印文本,但字符保持水平_C#_Printing - Fatal编程技术网

c#垂直打印文本,但字符保持水平

c#垂直打印文本,但字符保持水平,c#,printing,C#,Printing,是否可以使用printdocument打印如下图所示的字符串。即在文本保持水平的同时垂直打印。我所有垂直打印的搜索都涉及旋转字符串以旋转字符 我的代码非常低效且静态,因为它只考虑了PRODUCT这个词。事实上,我很难为情,甚至张贴在这里,但你可以看到它下面。我确定每个字符的位置。这里的问题是单词PRODUCT可以动态更改,因此下面的代码将无法工作 是否有类似于e.Graphics.RotateTransform的内置函数对字符串执行此操作 e.Graphics.DrawString("P", p

是否可以使用printdocument打印如下图所示的字符串。即在文本保持水平的同时垂直打印。我所有垂直打印的搜索都涉及旋转字符串以旋转字符

我的代码非常低效且静态,因为它只考虑了PRODUCT这个词。事实上,我很难为情,甚至张贴在这里,但你可以看到它下面。我确定每个字符的位置。这里的问题是单词PRODUCT可以动态更改,因此下面的代码将无法工作

是否有类似于e.Graphics.RotateTransform的内置函数对字符串执行此操作

e.Graphics.DrawString("P", probsoltext, Brushes.Black, new PointF(28, 406));
e.Graphics.DrawString("R", probsoltext, Brushes.Black, new PointF(28, 423));
e.Graphics.DrawString("O", probsoltext, Brushes.Black, new PointF(28, 441));
e.Graphics.DrawString("D", probsoltext, Brushes.Black, new PointF(28, 459));
e.Graphics.DrawString("U", probsoltext, Brushes.Black, new PointF(28, 476));
e.Graphics.DrawString("C", probsoltext, Brushes.Black, new PointF(28, 495));
e.Graphics.DrawString("T", probsoltext, Brushes.Black, new PointF(28, 513));

希望下面的代码对您有所帮助

System.Drawing.Graphics formGraphics = this.CreateGraphics();
        string drawString = "Product";
        System.Drawing.Font drawFont = new System.Drawing.Font("Arial", 16);
        System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
        float x = 100.0f;
        float y = 15.0f;
        System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat(StringFormatFlags.DirectionVertical);
        formGraphics.DrawString(drawString, drawFont, drawBrush, x, y, drawFormat);
        drawFont.Dispose();
        drawBrush.Dispose();
        formGraphics.Dispose();
下面这行就行了

System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat(StringFormatFlags.DirectionVertical);

希望下面的代码有帮助

System.Drawing.Graphics formGraphics = this.CreateGraphics();
        string drawString = "Product";
        System.Drawing.Font drawFont = new System.Drawing.Font("Arial", 16);
        System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
        float x = 100.0f;
        float y = 15.0f;
        System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat(StringFormatFlags.DirectionVertical);
        formGraphics.DrawString(drawString, drawFont, drawBrush, x, y, drawFormat);
        drawFont.Dispose();
        drawBrush.Dispose();
        formGraphics.Dispose();
下面这行就行了

System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat(StringFormatFlags.DirectionVertical);


有针对这个问题创建的代码吗?可能没有这样的方法,您的手动工作似乎是一个很好的解决方案,但您必须始终计算它是否适合页面。@P.K.使用StringFormat如何?使用StringFormat,您可以旋转整个文本,因此,字母也会旋转
StringFormatFlags。DirectionVertical
仅适用于CJK字符。(字符不旋转。)由于标准(拉丁字母)字符基本上是成比例的,因此不可能简单地旋转字符。不幸的是,即使使用固定宽度的字符,它也不起作用。只有两种选择:1。在每个字符后添加enter。2.制作通用代码(循环),每次在新位置上打印一个字符。是否为该问题创建了任何代码?可能没有此类方法,您的手动工作似乎是一个很好的解决方案,但您始终必须计算它是否适合页面。@P.K.使用StringFormat如何?使用StringFormat可以旋转整个文本,因此,字母也会旋转
StringFormatFlags。DirectionVertical
仅适用于CJK字符。(字符不旋转。)由于标准(拉丁字母)字符基本上是成比例的,因此不可能简单地旋转字符。不幸的是,即使使用固定宽度的字符,它也不起作用。只有两种选择:1。在每个字符后添加enter。2.制作通用代码(循环),每次在新位置打印一个字符。我试过你的代码。这些角色是横向的,不像我上面贴的图片。最终目标是什么?您希望显示类似于表的内容,其中第1列将为几行显示一个公共值;哪个将垂直对齐?我希望它看起来像我的OP中的图像。它基本上是一个表格,第一列是标题。用户将能够更改标题的语言,这将更改字符。这就是为什么我的手动解决方案在这里是无用的。但重要的是,字符是可读的,并且不旋转。好的。但我认为你不会得到任何现成的东西。解决方法可能是使用“TableLayoutPanel”?只是一个想法。因为您可以在任何单元格中拥有一个控件,并根据需要应用rowspan来合并任何列。就像在HTML中创建一个表一样。我尝试了你的代码。这些角色是横向的,不像我上面贴的图片。最终目标是什么?您希望显示类似于表的内容,其中第1列将为几行显示一个公共值;哪个将垂直对齐?我希望它看起来像我的OP中的图像。它基本上是一个表格,第一列是标题。用户将能够更改标题的语言,这将更改字符。这就是为什么我的手动解决方案在这里是无用的。但重要的是,字符是可读的,并且不旋转。好的。但我认为你不会得到任何现成的东西。解决方法可能是使用“TableLayoutPanel”?只是一个想法。因为您可以在任何单元格中拥有一个控件,并根据需要应用rowspan来合并任何列。就像在HTML中创建表一样。