我在c#中为我的客户开发发票打印应用程序,数据库是mysql。产品被添加到listview项目。我想将该列表视图绘制到图像。我试着循环listview项目。但它不起作用。列表视图中的数据没有逐行显示。
注意:productlist是listview的名称
int column = 2;
Bitmap bit = new Bitmap("D:\\jijo.jpg");
Graphics cd = Graphics.FromImage(bit);
for (int i = 0; i < productlist.Items.Count; i++)
{
cd.DrawString(productlist.Items[i].SubItems[column].Text, new Font("Arial", 19, FontStyle.Bold), SystemBrushes.ActiveCaptionText, new Point(0, 0 ));
}
bit.Save("D:\\sijo.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
答案 0 :(得分:1)
由于new point(0,0)
,您在同一位置反复绘制字符串。尝试将字符串一个接一个地绘制。例如,您可以将new Point(0,0)
替换为new Point(0, 24 * i)
。您可以尝试字符串之间的各种间距。
编辑:由于您正在绘制图片,我会使用像素高度而不是常规高度。例如,您可以替换
new Font("Arial", 19, FontStyle.Bold)
带
new Font("Arial", 19, FontStyle.Bold, GraphicsUnit.Pixel);
因此,您的drawString调用将如下所示:
cd.DrawString(productlist.Items[i].SubItems[column].Text,
new Font("Arial", 19, FontStyle.Bold, GraphicsUnit.Pixel),
SystemBrushes.ActiveCaptionText, new Point(0, 24 * i));