如何在winform里面显示 owc画出的图片

losgou 2006-10-24 12:14:23
如题, 小弟不胜感激
...全文
120 13 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
losgou 2006-10-24
  • 打赏
  • 举报
回复
Dim PieChartSpace As Microsoft.Office.Interop.Owc11.ChartSpace
Dim PieChart As Microsoft.Office.Interop.Owc11.ChChart
PieChartSpace = New Microsoft.Office.Interop.Owc11.ChartSpace
PieChart = PieChartSpace.Charts.Add(0)
Dim PieChartSeries As Microsoft.Office.Interop.Owc11.ChSeries
PieChartSeries = PieChart.SeriesCollection.Add(0)
PieChartSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames, Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral, "X")
PieChartSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories, Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral, "s1,s2,s3")
PieChartSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues, Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral, "12,11,21")

我做到这一步都没有错
但把他弄到
PictureBox1.Image = Image.FromStream(CType(PieChartSpace.GetPicture("gif", 500, 400), System.IO.BufferedStream))

就出错了

北京的雾霾天 2006-10-24
  • 打赏
  • 举报
回复
什么是owc?
如果是一个图片显示在winform是很简单的吧。。。
总之不明白楼主的意思
losgou 2006-10-24
  • 打赏
  • 举报
回复
沉了,没人要分么?

losgou 2006-10-24
  • 打赏
  • 举报
回复
好了,问题解决了,谢谢大侠
losgou 2006-10-24
  • 打赏
  • 举报
回复
如果用 this.chartBasItem.GetPicture() 不加参数获取bits的length就是0
加了之后有值了,但后面 Image.FromStream(m) 就会出错....
北京的雾霾天 2006-10-24
  • 打赏
  • 举报
回复
VB.NET的写法:
Private Function getChartImage() As Image
Dim image1 As Image = Nothing
Dim buffer1 As Byte() = TryCast(Me.chartBasItem.GetPicture,Byte())
If (Not buffer1 Is Nothing) Then
Dim stream1 As New MemoryStream(buffer1)
image1 = Image.FromStream(stream1)
End If
Return image1
End Function


xlshen_lxz 2006-10-24
  • 打赏
  • 举报
回复
thisChart.ExportPicture(System.Windows.Forms.Application.StartupPath + "\\xxx\\xx.gif","gif",512,336);
Image image = Image.FromFile(System.Windows.Forms.Application.StartupPath + "\\xxx\\xx.gif");
this.pictureBox1.Image = image;
北京的雾霾天 2006-10-24
  • 打赏
  • 举报
回复
sorry!
楼主用的是vb.net,等会给你一个。。。
北京的雾霾天 2006-10-24
  • 打赏
  • 举报
回复
如果再不行就改成下面的代码,因为好像这个as 用法在早期版.net不好使:
private Image getChartImage()
{
Image img = null;
object bits = this.chartBasItem.GetPicture();
if (bits is byte[])
{
MemoryStream m = new MemoryStream(bits);
img = Image.FromStream(m);
}
return img;
}
北京的雾霾天 2006-10-24
  • 打赏
  • 举报
回复
楼主可以写这样的一个函数:
private Image getChartImage()
{
Image img = null;
byte[] bits = this.chartBasItem.GetPicture() as byte[];
if (bits != null)
{
MemoryStream m = new MemoryStream(bits);
img = Image.FromStream(m);
}
return img;
}
如果楼主用Convert.ToByte,可能就不合适了,因为GetPicture()返回的数据本身就已经是一个byte数组了,用这个函数是用了Convert.ToByte(object o)这个重载,这里的o不会是一个byte数组的,所以结果就转不出来了。正确的用法就是用强制转换或用as转换。楼主可按上面的函数再试试。
losgou 2006-10-24
  • 打赏
  • 举报
回复
m = New System.IO.MemoryStream((Convert.ToByte(bits)))

类型转换不过去....
玉米了
北京的雾霾天 2006-10-24
  • 打赏
  • 举报
回复
这样也可以:
byts[] bits = this.chartBasItem.GetPicture() as byte[];
if (bits != null)
{
MemoryStream m = new MemoryStream(bits);
Image img = Image.FromStream(m);
PictureBox1.Image = img;
}
北京的雾霾天 2006-10-24
  • 打赏
  • 举报
回复
//参考如下:
object bits = PieChartSpace.GetPicture();//这里最好不加参数,这样会用得到默认图
MemoryStream m = new MemoryStream(bits as byte[]);
Image img = Image.FromStream(m);
PictureBox1.Image = img;
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-24 12:14
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。