PointToClient(Location) 的输出为什么 不变化呢。

cis111 2009-11-26 08:44:59
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Threading;
using System.Globalization;
using System.Windows.Forms;
using System.Reflection;
using System.Security.AccessControl;
using System.Drawing;
class App:Form
{
public static void Main(String[] args)
{
Application .Run(new App());
}
public App()
{
Text = "Form size";
BackColor = Color.White;
Width = 400;
}
protected override void OnMove(EventArgs e)
{
Invalidate();
}
protected override void OnResize(EventArgs e)
{
Invalidate();
}
protected override void OnPaint(PaintEventArgs e)
{
Graphics gf = e.Graphics ;
string str = "location :"+ Location+"\n"+
"Size : "+Size+"\n"+
"bound :"+ Bounds +"\n"+
"width"+Width +"\n"+
"Height:"+ Height+"\n"+
"Left :"+ Left+"\n"+
"top :"+ Top+"\n"+
"Right"+Right+"\n"+
"Bottom :"+ Bottom+"\n"+
"DesktopLocation :"+ DesktopLocation+"\n"+
"DesktopBounds"+ DesktopBounds+"\n"+
"ClientSize "+ ClientSize+"\n"+
"ClientRectangle"+ClientRectangle+"\n"+
"displayRectangle:"+ DisplayRectangle+"\n"+
"client--RectangleToScreen"+ RectangleToScreen(ClientRectangle)+"\n"+
"capitonHeight:"+ SystemInformation.CaptionHeight+"\n"+
"locaionto Client"+ PointToClient(Location);
gf.DrawString(str,Font,Brushes.Black,0,0);
}
}

"locaionto Client"+ PointToClient(Location) 的输出为什么 不变化呢。
...全文
426 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cis111 2009-11-28
  • 打赏
  • 举报
回复
谢谢,明白了。
wartim 2009-11-27
  • 打赏
  • 举报
回复
你没理解PointToClient方法的意思
这方法是把屏幕绝对坐标映射到父控件的工作区坐标
this.PointToClient(this.Location)
等于把form自己的左上角屏幕绝对坐标映射到自己的工作区坐标上去那肯定是固定的

所谓屏幕绝对坐标就是屏幕的坐标,屏幕左上角是(0,0)
所谓工作区坐标就是form的内部坐标,form工作区的左上角坐标是(0,0),
所谓工作区就是form除了边框和标题栏外可以放控件的地方
也就是说工作区坐标和form的location是无关的
this.PointToClient(this.Location)
等于求form的左上角对于工作区来说的坐标是什么,那就总是返回(-边框宽度,-标题栏高度)

Sugar_Tiger 2009-11-27
  • 打赏
  • 举报
回复
你把:PointToClient(Location); 改成Location.ToString()就行,
因为PointToClient(Location); 返回值是一个Point类型,直接用string去加,在转换过程会有错误.
Sugar_Tiger 2009-11-27
  • 打赏
  • 举报
回复
那我就不清楚了,我这里是坐标可以随时变化的,
cis111 2009-11-27
  • 打赏
  • 举报
回复
这个屏幕坐标 到 客户坐标 ,拖动 窗体 时,转换 以后的 客户 坐标 点 应该变化 啊。。为什么 没有变化呢?
cis111 2009-11-27
  • 打赏
  • 举报
回复
"locaionto Client tostring "+ PointToClient(Location).ToString()+"\n"+
改了,输出 还是不受影响啊。
我的 理解 应该 是 会变化 的啊。屏幕坐标转 客户坐标,客户窗体在拖动的时候 这个 输出 怎么没有变化呢。
Sugar_Tiger 2009-11-26
  • 打赏
  • 举报
回复
帮你试了一下,是没问题的,locaionto Client{X=-4,Y=-30}

111,123

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧