首页 / C# / 在WPF C#设计问题中绘制图表
在WPF C#设计问题中绘制图表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在WPF C#设计问题中绘制图表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2675字,纯文字阅读大概需要4分钟。
内容图文
![在WPF C#设计问题中绘制图表](/upload/InfoBanner/zyjiaocheng/769/c6cbb3384dd747f482e6bbdf2f2a99c8.jpg)
我一个月前有一个项目,我在使用Windows Forms的应用程序中绘制了一个股票图表.我这样做是通过创建一个可以拉伸到窗口尺寸的位图.这将允许我的图表使用窗口调整大小.
我现在正在使用WPF扩展项目.我一直在努力为我的项目设计工作,但我似乎无法了解做同样图表的最佳方法.我看过画布,网格和其他一些控件.我以为我在画布的正确轨道上,但是当我调整窗口大小时,我的绘图将保持在同一个位置.我想我今晚发表的观点是为了帮助我为我的项目集思广益.
所有建议和问题都表示赞赏.
谢谢,
约瑟夫
解决方法:
(实现这个地址充其量只是这个相当古老的问题的一个子集,因为它只是一种图表类型…)
只需fwiw,在网格中创建条形图为Ed suggests非常简单.这是一个快速而又脏的版本:
将一个网格添加到Window的XAML中.只是为了测试,这里完全填满了Window.
<Grid>
<Grid
Name="myGrid"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Width="auto"
Height="auto"
Margin="10,10,10,10"
/>
</Grid>
现在在项目的某处插入这两个实用程序函数.它们为x轴提供简单的单色列和无样式但居中的标签文本.
我认为唯一令人讨厌的问题是_placeSingleColorColumn调用中的maxHeight.
Worth mentioning: I don’t have labels for the y-axis in this quick & dirty version.
private void _placeSingleColorColumn(Grid grid, Color color, int height, int colNum, int maxHeight)
{
Brush brush = new SolidColorBrush(color);
Rectangle rect = new Rectangle();
rect.Fill = brush;
Grid.SetColumn(rect, colNum);
Grid.SetRow(rect, maxHeight - height);
Grid.SetRowSpan(rect, height);
grid.Children.Add(rect);
}
private void _createLabels(Grid grid, string[] labels)
{
RowDefinition rowDefnLabels = new RowDefinition();
grid.RowDefinitions.Add(rowDefnLabels);
for (int i = 0; i < labels.Length; i++)
{
TextBlock block = new TextBlock();
block.Text = labels[i];
block.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
Grid.SetColumn(block, i);
Grid.SetRow(block, grid.RowDefinitions.Count);
grid.Children.Add(block);
}
}
真的是这样的.这里有一些疯狂的快速和脏的示例代码,用于创建带有一些示例数据的10 x 10网格.
public void createGrid10x10()
{
Random random = new Random();
for (int i=0; i<10; i++)
{
ColumnDefinition colDef = new ColumnDefinition();
myGrid.ColumnDefinitions.Add(colDef);
RowDefinition rowDef = new RowDefinition();
myGrid.RowDefinitions.Add(rowDef);
Color color = i % 2 == 0 ? Colors.Red : Colors.Blue;
_placeSingleColorColumn(this.myGrid, color, random.Next(1,11), i, 10);
}
string[] aLabels = "Dogs,Cats,Birds,Snakes,Rabbits,Hamsters,Horses,Rats,Bats,Unicorns".Split(',');
_createLabels(this.myGrid, aLabels);
}
在MainWindow构造函数中添加一行,然后就完成了.
public MainWindow()
{
InitializeComponent();
this.createGrid10x10();
}
现在你已经有了一个条形图,当窗口调整大小时,它会调整大小并保持比例.
如果您了解上述内容,添加更多标签(顶部的条形值,y轴标签等)应该非常简单.只需抛出另一列和/或行,创建TextBlock,然后将它们放在正确的位置.
内容总结
以上是互联网集市为您收集整理的在WPF C#设计问题中绘制图表全部内容,希望文章能够帮你解决在WPF C#设计问题中绘制图表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。