c#从右到左打印 [英] c# print right to left

查看:24
本文介绍了c#从右到左打印的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在处理一些阿拉伯语数据,我想从右到左打印它

I am working with some arabic data and I want to print it from right to left

我试过了

StringFormat format = new StringFormat(StringFormatFlags.DirectionRightToLeft);
                e.Graphics.DrawString(dataToPrint, valueFont, System.Drawing.Brushes.Black, 20, 20, format);

但是这使得文本仍然从左边开始并且它使它更糟所以现在我看不到所有文本像这样:

but that makes the text to still start from the left and it makes it worse so now I can't see all the text like this:

但是当我删除 format 时,我得到了这个:

but when I remove the format, I got this:

我需要和第二张图片完全一样,但从右到左.

I need to have exactly as the second image but from right to left.

有什么帮助吗?

更新 1这就是我如何填充 dataToPrint 对象

Update 1 This is how I fill the dataToPrint object

 System.Drawing.Font valueFont = new System.Drawing.Font("Arial", 15, System.Drawing.FontStyle.Regular);
                string dataToPrint = "";
                dataToPrint += "رقم بطاقة التسويق = " + farmID.Text + Environment.NewLine;
                dataToPrint += "إسم صاخب المزرعة = " + farmOwner.Text + Environment.NewLine;
                dataToPrint += "رقم المزرعة = " + farmNumber.Text + Environment.NewLine;
                dataToPrint += "الموبايل = " + farmMobile.Text + Environment.NewLine;
                dataToPrint += "الإمارة = " + emaraNameArabic.Text + Environment.NewLine;
                dataToPrint += "المنطقة = " + areaNameArabic.Text + Environment.NewLine;
                dataToPrint += "الإقليم = " + regionNameArabic.Text + Environment.NewLine;
                dataToPrint += "مركز الإستلام = " + receivingCenterName.Text + Environment.NewLine;
                dataToPrint += "خلاص = " + khalas.Text + Environment.NewLine;
                dataToPrint += "فرض = " + fardh.Text + Environment.NewLine;
                dataToPrint += "لولو = " + otherLulu.Text + Environment.NewLine;
                dataToPrint += " خنيزي= " + khedrawi.Text + Environment.NewLine;
                dataToPrint += "بومعان = " + boumaan.Text + Environment.NewLine;
                dataToPrint += "برحي = " + barhi.Text + Environment.NewLine;
                dataToPrint += "جش خزمة = " + jeshKharma.Text + Environment.NewLine;
                dataToPrint += "رزيز = " + reziz.Text + Environment.NewLine;
                dataToPrint += "جبري = " + jabri.Text + Environment.NewLine;
                dataToPrint += "عنبرة المدينة = " + anbaretAlMadina.Text + Environment.NewLine;
                dataToPrint += " شيشي= " + shishi.Text + Environment.NewLine;
                dataToPrint += "دباس = " + dabbas.Text + Environment.NewLine;
                dataToPrint += "نبتة سيف = " + nabtetSaif.Text + Environment.NewLine;
                dataToPrint += "خضراوي = " + khedrawi.Text + Environment.NewLine;
                dataToPrint += "هلالي = " + hilali.Text + Environment.NewLine;
                dataToPrint += "مكتومي = " + maktoumy.Text + Environment.NewLine;
                dataToPrint += "نميشي = " + namishi.Text + Environment.NewLine;

更新 2

@Reyhaneh SH 回答后,我将 20 改为 400,这是结果,仍然不是从右到左

Update 2

After @Reyhaneh SH answer I change the 20 to 400 and this is the result, still not from right to left

推荐答案

你的两个代码都是对的,但问题是你的 X 位置使用了 20 像素.X 从左上角指定位置.试试看:

Both of your codes are right, but the problem is that you used 20 pixels for the X position. X specifies the location from upper-left. Try it with :

 e.Graphics.DrawString(dataToPrint, valueFont, 
        System.Drawing.Brushes.Black, 200, 20, format);

您也可以使用任何其他大于 20 像素的适当数字.

You can also use any other numbers bigger than 20 pixels that is proper.

这篇关于c#从右到左打印的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆