如何绘制正方形并动态分配颜色 属性 (PDFsharp)?
How to draw squares and assign the color property dynamically (PDFsharp)?
我正在使用 PDFsharp 导出图表图例。我正在使用 for 循环和 table 来显示属性。实际上只有一个 属性:Subdivision 名称。该对象具有可供使用的正确 RGB 颜色。我怎样才能在它旁边画方块,就像图表图例显示系列一样?请原谅我的变量名,我要举个例子。
//Writting Table Header Text
textformater.DrawString(" Color", tableheader, XBrushes.Black, snoColumn);
textformater.DrawString(" Subdivision Name", tableheader, XBrushes.Black, snoStudentName);
foreach (var item in data)
{
y = y + 30;
XRect snoColumnVal = new XRect(35, y, 70, height);
XRect snoStudentNameVal = new XRect(100, y, 250, height);
textformater.DrawString(item.Color, tableheader, XBrushes.Black, snoColumnVal);
textformater.DrawString(item.Name, tableheader, XBrushes.Black, snoStudentNameVal);
}
这是输出:
这就是我需要的样子
要绘制正方形,请使用 DrawRectangle
而不是 DrawString
。
示例代码可以在这里找到:
http://pdfsharp.net/wiki/Graphics-sample.ashx#Draw_rectangles_6
图形示例也包含在 PDFsharp 源代码包中。
像这样画正方形:
// Create solid brush.
SolidBrush blueBrush = new SolidBrush(Color.Blue);
// Create rectangle.
Rectangle rect = new Rectangle(0, 0, 200, 200);
// Fill rectangle to screen.
e.Graphics.FillRectangle(blueBrush, rect);
设置颜色的方法如下:
// Create a green color using the FromRgb static method.
Color myRgbColor = new Color();
myRgbColor = Color.FromRgb(0, 255, 0);
return myRgbColor;
参考:https://msdn.microsoft.com/en-us/library/19sb1bw6(v=vs.110).aspx
我在演示中使用了这个结构:
struct RowItem
{
public int R, G, B;
public string Text;
}
这是我的测试数据:
var data = new[]
{
new RowItem{R = 255, G = 0, B = 0, Text = "Red row"},
new RowItem{R = 0, G = 255, B = 0, Text = "Green row"},
new RowItem{R = 255, G = 255, B = 0, Text = "Yellow row"},
new RowItem{R = 0, G = 0, B = 255, Text = "Blue row"},
new RowItem{R = 255, G = 0, B = 255, Text = "Purple row"},
new RowItem{R = 0, G = 255, B = 255, Text = "Cyan row"},
new RowItem{R = 0, G = 0, B = 0, Text = "Black row"}
};
下面是绘图的代码:
foreach (var item in data)
{
y = y + 30;
XRect snoColumnVal = new XRect(35, y, 60, 25);
XRect snoStudentNameVal = new XRect(100, y, 250, 25);
var brush = new XSolidBrush(XColor.FromArgb(255, item.R, item.G, item.B));
gfx.DrawRectangle(XPens.Black, brush, snoColumnVal);
textformater.DrawString(item.Text, font, XBrushes.Black, snoStudentNameVal);
}
R、G 和 B 是颜色分量(范围从 0 到 255)。
我正在使用 PDFsharp 导出图表图例。我正在使用 for 循环和 table 来显示属性。实际上只有一个 属性:Subdivision 名称。该对象具有可供使用的正确 RGB 颜色。我怎样才能在它旁边画方块,就像图表图例显示系列一样?请原谅我的变量名,我要举个例子。
//Writting Table Header Text
textformater.DrawString(" Color", tableheader, XBrushes.Black, snoColumn);
textformater.DrawString(" Subdivision Name", tableheader, XBrushes.Black, snoStudentName);
foreach (var item in data)
{
y = y + 30;
XRect snoColumnVal = new XRect(35, y, 70, height);
XRect snoStudentNameVal = new XRect(100, y, 250, height);
textformater.DrawString(item.Color, tableheader, XBrushes.Black, snoColumnVal);
textformater.DrawString(item.Name, tableheader, XBrushes.Black, snoStudentNameVal);
}
这是输出:
这就是我需要的样子
要绘制正方形,请使用 DrawRectangle
而不是 DrawString
。
示例代码可以在这里找到:
http://pdfsharp.net/wiki/Graphics-sample.ashx#Draw_rectangles_6
图形示例也包含在 PDFsharp 源代码包中。
像这样画正方形:
// Create solid brush.
SolidBrush blueBrush = new SolidBrush(Color.Blue);
// Create rectangle.
Rectangle rect = new Rectangle(0, 0, 200, 200);
// Fill rectangle to screen.
e.Graphics.FillRectangle(blueBrush, rect);
设置颜色的方法如下:
// Create a green color using the FromRgb static method.
Color myRgbColor = new Color();
myRgbColor = Color.FromRgb(0, 255, 0);
return myRgbColor;
参考:https://msdn.microsoft.com/en-us/library/19sb1bw6(v=vs.110).aspx
我在演示中使用了这个结构:
struct RowItem
{
public int R, G, B;
public string Text;
}
这是我的测试数据:
var data = new[]
{
new RowItem{R = 255, G = 0, B = 0, Text = "Red row"},
new RowItem{R = 0, G = 255, B = 0, Text = "Green row"},
new RowItem{R = 255, G = 255, B = 0, Text = "Yellow row"},
new RowItem{R = 0, G = 0, B = 255, Text = "Blue row"},
new RowItem{R = 255, G = 0, B = 255, Text = "Purple row"},
new RowItem{R = 0, G = 255, B = 255, Text = "Cyan row"},
new RowItem{R = 0, G = 0, B = 0, Text = "Black row"}
};
下面是绘图的代码:
foreach (var item in data)
{
y = y + 30;
XRect snoColumnVal = new XRect(35, y, 60, 25);
XRect snoStudentNameVal = new XRect(100, y, 250, 25);
var brush = new XSolidBrush(XColor.FromArgb(255, item.R, item.G, item.B));
gfx.DrawRectangle(XPens.Black, brush, snoColumnVal);
textformater.DrawString(item.Text, font, XBrushes.Black, snoStudentNameVal);
}
R、G 和 B 是颜色分量(范围从 0 到 255)。