当前位置: 首页 > news >正文

网站建设人文类商城网站建设哪家最好

网站建设人文类,商城网站建设哪家最好,网页设计尺寸怎么算,广州网站建设开发本文经原作者授权以原创方式二次分享#xff0c;欢迎转载、分享。原文作者#xff1a;唐宋元明清原文地址#xff1a;https://www.cnblogs.com/kybs0/p/7420767.html窗口居中 变更触发机制解决#xff1a;1#xff09;单实例窗口#xff0c;窗口每次隐藏后再显示时… 本文经原作者授权以原创方式二次分享欢迎转载、分享。原文作者唐宋元明清原文地址https://www.cnblogs.com/kybs0/p/7420767.html窗口居中 变更触发机制解决1单实例窗口窗口每次隐藏后再显示时位置居中显示2多屏幕下单实例窗口当父窗口移动到其它屏幕时单实例窗口再次弹出时位置才更新到父窗口屏幕。3子窗口每次唤醒时都居中显示。窗口首次显示的位置 - WindowStartupLocationWindows的启动时位置显示WindowStartupLocationCenterOwner --显示在父窗口的中间设置Owner)CenterScreen --显示在当前屏幕中间Manual --默认位置 当第一次Window.ShowDialog时window显示如上设置。变更触发机制 上面只涉及到了首次显示位置之后窗口的位置会继续保留如何设置窗口隐藏之后再次弹出时显示在中间CenterOwner/CenterScreen如何设置窗口一直停留在显示在中间我们先了解一下有哪些触发机制Activated 窗口激活 窗口变更为前台窗口时即显示在最前面会触发IsVisibleChanged 显示变更 当我们设置窗口隐藏Hide()时IsVisibilefalse.窗口再次ShowDialog时IsVisibiletrue; 利用如上俩种机制下面就可以搞事情了。首先定义几个枚举/// summary/// 窗口显示变更触发时机/// /summarypublic enum WindowLocationInvokeOccasion{/// summary/// 只要Activated就显示在中间/// /summaryActivated  0,/// summary/// 只在第一次Activated时显示在中间一次之后的变化就不修改/// /summaryFirstActivated,/// summary/// 窗口每次显示时窗口居中/// para可以解决单实例窗口弹出不居中问题/para/// /summaryVisibile,/// summary/// 窗口每次显示时如父窗口与当前窗口不在同一屏幕时窗口居中/// para可以解决单实例窗口弹出不居中问题/para/// /summaryVisibileInDifferentScreen,/// summary/// 不触发/// /summaryDefatult}如上枚举包含了4种触发机制。我们再定义个附加属性通过附加属性去设置窗口的额外功能-居中显示触发机制/// summary /// 窗口显示居中触发时机 /// para另居中显示设置请使用see crefWindow/的see crefWindowStartupLocation/属性/para /// /summary public static readonly DependencyProperty InvokeOccasionProperty  DependencyProperty.RegisterAttached(InvokeOccasion, typeof(WindowLocationInvokeOccasion), typeof(WindowLocationOptions),new PropertyMetadata(default(WindowLocationInvokeOccasion), InvokeOccasionProperty_ChangedCallback));在属性更改触发事件中根据不同的触发条件设置不同的居中显示。Activated --只要Activated就显示在中间 每次触发直接显示窗口即可;首次Activated通过设置Window.Activated - ShowInCenter_Activated;禁用下次触发进入VisibileVisibileInDifferentScreen窗口显示时如父窗口与当前窗口不在同一屏幕时窗口居中. 怎么判断当前子窗口与父窗口是否在同一屏幕var screen  Screen.FromHandle(new WindowInteropHelper(parentWindow).Handle);Graphics currentGraphics  Graphics.FromHwnd(new WindowInteropHelper(parentWindow).Handle); double dpiXRatio  currentGraphics.DpiX / 96; double dpiYRatio  currentGraphics.DpiY / 96;//当子窗口与父窗口所在屏幕相同时不作处理 var isSubWindowInSameScreen  subWindow.Left  screen.Bounds.Left / dpiXRatio subWindow.Left  screen.Bounds.Left / dpiXRatio  screen.Bounds.Width / dpiXRatio subWindow.Top  screen.Bounds.Top / dpiYRatio subWindow.Top  screen.Bounds.Top / dpiYRatio  screen.Bounds.Height / dpiYRatio; return isSubWindowInSameScreen;绍完成触发条件下面说下窗口居中显示。居中显示,分为当前屏幕内居中/主窗口内居中,直接上代码1在主窗口中居中显示-CenterOwner 设置窗口的依靠位置Location(Left,Top)左上角子窗口最大化时 --WindowState“Maximized”最大化窗口固定的弹出到主屏幕因此需额外处理根据屏幕Location设置位置父窗口最大化时 --父窗口最大化时父窗口的location,因窗口设置margin有可能不准确故取屏幕位置CenterOwner窗口居中显示 --直接取父窗口的位置/大小和子窗口的大小进行计算即可;PS:窗口的位置Left/Top可能为负/// summary /// 在主窗口中居中显示 /// /summary /// param namesubWindow/param /// param nameparentWindow/param private static void SetWindowInCenterOwner(Window subWindow, Window parentWindow) {//最大化窗口固定的弹出到主屏幕因此需额外处理if (subWindow.WindowState  WindowState.Maximized){//子窗口最大化时需要根据屏幕设置位置var screen  Screen.FromHandle(new WindowInteropHelper(parentWindow).Handle);Graphics currentGraphics  Graphics.FromHwnd(new WindowInteropHelper(parentWindow).Handle);double dpiXRatio  currentGraphics.DpiX / 96;double dpiYRatio  currentGraphics.DpiY / 96;subWindow.Left  screen.Bounds.Left / dpiXRatio;subWindow.Top  screen.Bounds.Top / dpiYRatio;}if (parentWindow.WindowState  WindowState.Maximized){//父窗口最大化时父窗口的location,因窗口设置margin有可能不准确故取屏幕位置var screen  Screen.FromHandle(new WindowInteropHelper(parentWindow).Handle);Graphics currentGraphics  Graphics.FromHwnd(new WindowInteropHelper(parentWindow).Handle);double dpiXRatio  currentGraphics.DpiX / 96;double dpiYRatio  currentGraphics.DpiY / 96;//窗口居中显示subWindow.Left  screen.Bounds.Left / dpiXRatio (screen.Bounds.Width / dpiXRatio - subWindow.ActualWidth) / 2;subWindow.Top  screen.Bounds.Top / dpiYRatio (screen.Bounds.Height / dpiYRatio - subWindow.ActualHeight) / 2;}else{//窗口居中显示subWindow.Left  parentWindow.Left  (parentWindow.ActualWidth - subWindow.ActualWidth) / 2;subWindow.Top  parentWindow.Top  (parentWindow.ActualHeight - subWindow.ActualHeight) / 2;} }2当前屏幕内居中-CenterScreen;窗口位置设置和上面的一样值得注意的是DPI。通过win的显示设置调整文本显示比例屏幕的位置转换(X,Y)得考虑DPI的换算;/// summary /// 在父窗口所在屏幕居中显示 /// /summary /// param namesubWindow/param /// param nameparentWindow/param private static void SetWindowInCenterScreen(Window subWindow, Window parentWindow) {SetWindowLocationInScreen(subWindow, parentWindow, subWindow.WindowState); }private const int DpiPercent  96;private static void SetWindowLocationInScreen(Window subWindow, Window parentWindow, WindowState windowState) {var intPtr  new WindowInteropHelper(parentWindow).Handle;var screen  Screen.FromHandle(intPtr);using (Graphics currentGraphics  Graphics.FromHwnd(intPtr)){double dpiXRatio  currentGraphics.DpiX / DpiPercent;double dpiYRatio  currentGraphics.DpiY / DpiPercent;if (windowState  WindowState.Maximized){//设置全屏LocationsubWindow.Left  screen.Bounds.Left / dpiXRatio;subWindow.Top  screen.Bounds.Top / dpiYRatio;}else{//设置居中LocationsubWindow.Left  screen.Bounds.Left / dpiXRatio (screen.Bounds.Width / dpiXRatio - subWindow.ActualWidth) / 2;subWindow.Top  screen.Bounds.Top / dpiYRatio (screen.Bounds.Height / dpiYRatio - subWindow.ActualHeight) / 2;}} }
http://www.pierceye.com/news/342095/

相关文章:

  • 环境设计排版素材网站周口市住房和城乡建设局网站
  • 建设部资质查询网站wordpress采集英文
  • 深圳北站设计方案高质量网站外链平台
  • 苏州做网站优化的公司国外 网站页面
  • 网站建设流程发布网站和网页制作鲜花网站建设论文百度文库
  • 建个人网站赚钱吗手机网站页面大小
  • php简单购物网站源码海口网红美食餐厅
  • 傻瓜式建站软件长沙做软件的公司
  • 旅行社营业网点可以做网站吗别人网站建设多少钱
  • 南宁设计网站建设教程网站建设
  • 柯城区住房和城乡建设局网站wordpress仿fe素材
  • 黄岛建设局网站用什么建设网站
  • 桂林dj网站郑州上海做网站的公司
  • 进入江苏省住房和城乡建设厅网站网络舆情监测 toom
  • 延安市建设工程交易中心网站seo网络营销推广优化
  • 网站一条龙服务教育类网站前置审批
  • 安徽省建设厅网站首页wordpress和typecho
  • 网站开发考试题torrentkitty磁力猫引擎
  • 如何把电脑改成服务器 做网站微信网站背景图片
  • 淘宝客网站建设详细教程链接交换平台
  • 外贸门户网站深圳网站制作开发排名
  • 如何建设一个稳定的网站photoshop网页制作视频教程
  • 企业网站建设合作合同28招商加盟网
  • 国外设计灵感网站WordPress数据库添加管理员
  • 山东省建设备案网站审批表免费设计手写签名
  • 家庭电脑做网站深圳罗湖网站制作公司
  • 聊城做wap网站服务有哪些做特卖的网站有哪些
  • wordpress後台建站flash美食网站论文
  • 网站服务器ip地址在哪里看用记事本做电影介绍的网站
  • 重庆企业建站公司沧浪企业建设网站价格