我有一个BufferedGraphics
实例,我在上面画了一些图表。我想创建一个名为的函数DrawLegends
,它接受一个实例BufferedGraphics
并绘制两个字符串作为图例。
我可以创建一个PointF
指向 (0, 0) 的实例,但我想将图例放在底部。我应该如何处理?我可以用BufferedGraphics
实例来做吗,还是我还需要我正在绘制的面板?
重要的是您需要知道绘图画布(即面板)的尺寸(主要是高度)。这将用于最终计算图例的位置。因此,如果您没有将高度信息存储在其他地方,那么是的,您将不得不在某种程度上使用面板
归根结底,几乎所有绘制到屏幕上的对象都可以手动绘制,就像在它们的封面下一样,或者在您喜欢的时候暴露一个图形对象以进行绘制。
因此,如果您在图形对象或您当前使用的任何东西上进行绘图,那么当您完成绘图时,只需将该图形对象绘制到您想要显示它的任何控件上。因为您可以将图形对象视为图像。没有理由不能传入要绘制的底层控件图形对象而不是制作自己的图形对象,但是如果您有一个方法可以:
void DrawGraph(string xLegend, string yLegend, IList<XYValues> values, Graphics graphics);
然后,您可以使用数据绘制到该图形对象上,调用 invalidate 并完成。