【发布时间】:2011-02-15 15:18:11
【问题描述】:
我正在使用 .PointToScreen(Point.Empty);确定控件相对于我的整个屏幕的位置。我面临的唯一问题是,如果坐标在表单内,它们总是会偏离一点。在我看来,正在发生的事情是没有考虑表单的边距并导致此错误。
我正在使用它来截取整个表单或表单内的控件。当我做一个完整的屏幕截图时,发生的情况是边距再次没有被考虑在内。 .PointToScreen(Point.Empty); 给出的坐标;是表单的左上角,但它在表单内部,所以当我从这一点截取屏幕截图时,它会越过右边框和下边框。
是否有自动的内置方法来解决这个问题,还是我必须手动补偿这个边距错误?
static public void PrintForm(Control form) {
Bitmap image = new Bitmap(form.Width, form.Height);
Graphics g = Graphics.FromImage(image);
g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
g.CopyFromScreen(form.PointToScreen(Point.Empty).X, form.PointToScreen(Point.Empty).Y, 0, 0, new Size(form.Width, form.Height), CopyPixelOperation.SourceCopy);
PrintDocument document = new PrintDocument();
document.PrintPage += (sender, e) => Document_PrintImage(e, image);
document.Print();
}
【问题讨论】:
标签: c# winforms coordinates