重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
wpf的话,可以直接定义Button的Temple实现椭圆的按钮,没必要自定义控件啊
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都网站设计、孝义网络推广、小程序定制开发、孝义网络营销、孝义企业策划、孝义品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供孝义建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
基础: 使用模板自定义 WPF 控件
如图所示黑色矩形为窗体边线;
L1是控件1的左边离开窗体左边界的距离;
T1是控件1的上边离开窗体上边界的距离;
W1是控件1的宽度;
H1是控件1的高度;
L2是控件2的左边离开窗体左边界的距离;
T2是控件2的上边离开窗体上边界的距离;
W2是控件2的宽度;
H2是控件2的高度;
如果把边界相切也算作重叠,根据数学知识可以找出不重叠的数学关系;
一,水平情况不重叠;
1,控件1在控件2的左边
有:L1 + W1 L2
2,控件2在控件1的左边
有:L2 + W2 L1
二,垂直情况不重叠;
3,控件1在控件2的上边
有:T1 + H1 T2
4,控件2在控件1的上边
有:T2 + H2 T1
以上四种情况只要有一个成立,两个控件就不重叠;反之就重叠,代码的逻辑关系如下;
If (L1 + W1 L2) Or (L2 + W2 L1) Or (T1 + H1 T2) Or (T2 + H2 T1) Then
MsgBox("不重叠!")
Else
MsgBox("重叠!")
End If
Canvas Name="LayoutRoot" Background="LightGray"
!-- Create an Ellipse --
Ellipse Name="mcCircle" Width="200" Height="200"
Canvas.Left="60" Canvas.Top="20"
Fill="Gray" Stroke="Black" StrokeThickness="2"
/Ellipse
!-- Create Slider controls --
Slider Name="RedSlider" Width="300" Height="20"
Background="Red" Maximum="255" Minimum="0"
Canvas.Left="30" Canvas.Top="240"
ValueChanged="RedSlider_ValueChanged"/
Slider Name="GreenSlider" Width="300" Height="20"
Background="Green" Maximum="255" Minimum="0"
Canvas.Left="30" Canvas.Top="270"
ValueChanged="GreenSlider_ValueChanged"/
Slider Name="BlueSlider" Width="300" Height="20"
Background="Blue" Maximum="255" Minimum="0"
Canvas.Left="30" Canvas.Top="300"
ValueChanged="BlueSlider_ValueChanged"/
/Canvas
private void RedSlider_ValueChanged(object sender,RoutedPropertyChangedEventArgsdouble e)
{
UpdateCircleWithColors();
}
private void GreenSlider_ValueChanged(object sender,RoutedPropertyChangedEventArgsdouble e)
{
UpdateCircleWithColors();
}
private void BlueSlider_ValueChanged(object sender,RoutedPropertyChangedEventArgsdouble e)
{
UpdateCircleWithColors();
}
private void UpdateCircleWithColors()
{
Color clr = Color.FromArgb(255, Convert.ToByte(RedSlider.Value),
Convert.ToByte(GreenSlider.Value), Convert.ToByte(BlueSlider.Value));
mcCircle.Fill = new SolidColorBrush(clr);
}