如何设置和获得控件相对于Canvas的位置
2015-02-05 15:29
246 查看
Canvas是WPF中常用的控件,今天第一次使用,有很多属性都不熟悉,不过用过了的就要记住,下一次就不会再犯愁如何使用啦。
Canvas中的控件可以任意布局,并且能够获得较为精确的位置,那么如果设置控件相对于Canvas的位置呢?如下:
设置位置: Canvas.SetLeft(ControlName, LocationX1);
Canvas.SetTop(ControlName, LocationY1);
Canvas.SetRight(ControlName, LocationX2);
Canvas.SetBottom(ControlName, LocationY2);
获得位置: Canvas.GetLeft(ControlName);
Canvas.GetTop(ControlName);
Canvas.GetRight(ControlName);
Canvas.GetBottom(ControlName);
简单的属性设置,却帮了我的大忙,成功的解决了按钮后台生成并自动布局的问题,本着分享的原则,代码如下:
加入测试代码:
效果如下:
第一次发博文,希望大家多多鼓励。以后我会在CSDN上多发博文,多与大家交流经验,让自己技术成长得更快。
Canvas中的控件可以任意布局,并且能够获得较为精确的位置,那么如果设置控件相对于Canvas的位置呢?如下:
设置位置: Canvas.SetLeft(ControlName, LocationX1);
Canvas.SetTop(ControlName, LocationY1);
Canvas.SetRight(ControlName, LocationX2);
Canvas.SetBottom(ControlName, LocationY2);
获得位置: Canvas.GetLeft(ControlName);
Canvas.GetTop(ControlName);
Canvas.GetRight(ControlName);
Canvas.GetBottom(ControlName);
简单的属性设置,却帮了我的大忙,成功的解决了按钮后台生成并自动布局的问题,本着分享的原则,代码如下:
private void AddCanvasControl(List<string> aTypeStrList) { int aLocationX = 0; int aLocationY = 0; rCanvas.Children.Clear(); foreach (string aStrType in aTypeStrList) { Button aBtn = new Button(); aBtn.Content = aStrType; aBtn.Height = 20; Font f = new Font("SimSun", 7F, System.Drawing.FontStyle.Regular); System.Drawing.Size aSize = System.Windows.Forms.TextRenderer.MeasureText(aStrType, f); //获得字符在控件中显示的尺寸 aBtn.Width = aSize.Width + 20; aBtn.HorizontalAlignment = HorizontalAlignment.Left; rCanvas.Children.Add(aBtn); if (aLocationX + aBtn.Width > rCanvas.RenderSize.Width) { aLocationY += 25; aLocationX = 0; } Canvas.SetLeft(aBtn, aLocationX); //设置按钮在容器中的位置 Canvas.SetTop(aBtn, aLocationY); aLocationX += (int)aBtn.Width + 10; } }
加入测试代码:
private void Window_Loaded(object sender, RoutedEventArgs e) { List<string> aStrList = new List<string>(); aStrList.Add("Canvas"); aStrList.Add("RenderSize"); aStrList.Add("SetResourceReference"); aStrList.Add("TextRenderer.MeasureText"); aStrList.Add("学习"); aStrList.Add("WPF博大精深"); aStrList.Add("button自动布局"); aStrList.Add("button自动大小"); aStrList.Add("字符串"); AddCanvasControl(aStrList); }
效果如下:
第一次发博文,希望大家多多鼓励。以后我会在CSDN上多发博文,多与大家交流经验,让自己技术成长得更快。
相关文章推荐
- 如何设置和获得控件相对于Canvas的位置
- C# Winform 如何获得窗体上控件相对于屏幕的位置
- 如何获得窗体上控件相对于屏幕的位置?
- MFC中,如何获得对话框控件相对于父窗口(对话框窗口)的位置
- MFC中,如何获得对话框控件相对于父窗口(对话框窗口)的位置 及Invalidate(TRUE)的闪屏问题
- MFC中获得对话框控件相对于父窗口的位置
- jquery如何设置控件位置
- 如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置
- jquery如何设置控件位置
- MFC如何获取控件相对于窗口的左边,以及鼠标相对于控件的位置
- 设置完在Canvas的位置后,控件HitTest不响应的问题
- 代码中动态设置相对布局里控件的位置
- jquery如何设置控件位置
- jquery如何设置控件位置
- 如何让两个元素的相对位置不变,设置css
- 关于最外层为相对布局时,通过动态设置布局内控件位置问题
- 关于获得对话框中子控件相对该对话框客户区的位置
- WPF如何获取控件之间的相对位置
- ASP.NET用户控件中的图片路径如何设置,img相对路径设置方法
- 动态创建的控件,如何控制相对位置