目录区域:

wpf 客户端【JDAgent桌面助手】业余开发的终于完工了。。晒晒截图
wpf 客户端【JDAgent桌面助手】开发详解-开篇


内容区域:

这里开始主窗口 圆形菜单制作的过程,首先请大家看看下面的截图,想一想

1.如果你用winform如何开发呢? 如果用wpf怎么开发呢?

2.布局看起来不难做啊。但是真的很简单么?

3.我的窗体不是想金山毒霸哪有的窗口大小宽高固定的,那如果窗口最大化或者改变了宽高,中间的圆形菜单还是原来的大小,岂不是中间那么大区域就这么一个小圈太难看了吧?

大家思考5min后。。继续向下看。。。程序员最享受的是思考过程,静心思考,如果有更好的解决或者实现方法,或者发行我实现的方法有漏洞是留言。。。。

上图:

第一步 布局背景图:

我们先设定好容器gird 为380px 三个正圆形 一个是最外面的蓝色光环,一个是中间的蓝色光环,一个是最内部的有点灰色的圆形,在加一个 中间的小狗 Ok 简单布局就好了:

  <Grid Height="380"
Width="380"
Name="menuGrid">
<Ellipse Name="menuRoundBig"
Fill="#F4F8FB"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Stroke="#E0E0E0"
StrokeThickness="1"
Height="380"
Width="380">
<Ellipse.Effect>
<DropShadowEffect BlurRadius="20"
ShadowDepth="0"
Color="#52D3EC" />
</Ellipse.Effect>
</Ellipse>
<Ellipse Name="menuRoundSmall"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Stroke="#E0E0E0"
StrokeThickness="0"
Height="300"
Width="300">
<Ellipse.Effect>
<DropShadowEffect BlurRadius="50"
ShadowDepth="0"
Color="#52D3EC" />
</Ellipse.Effect>
<Ellipse.Fill>
#DFE2E5
</Ellipse.Fill>
</Ellipse>
<Ellipse Name="menuRoundCenter"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Stroke="#E0E0E0"
StrokeThickness="0"
Height="300"
Width="300">
<Ellipse.Fill>
<RadialGradientBrush RadiusX="1"
RadiusY="1"
GradientOrigin="0.7,0.3">
<GradientStop Color="White"
Offset="0"></GradientStop>
<GradientStop Color="#DFE2E5"
Offset="1"></GradientStop>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Image Name="menuCenterimg"
Source="/img.png"
Height="120"
Stretch="Uniform">
</Image>
<Canvas Name="MenuCanvas"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Height="340"
Width="340">
</Canvas>
</Grid>

第二步 布局按钮图:

在这里要用到勾股定理计算6个按钮的坐标,计算过程我就不写了,本来想弄个图的。。弄的也不好。。。这个写博客真是费劲啊。。

就下面的图凑合看吧。。。360度。。总共6个角度所以每个角度60度。

第三步 在窗口大小改变时如何自适应,而能够保持合适的大小;

两点 :

 <Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"></RowDefinition>
<RowDefinition Height="5*"></RowDefinition>
<RowDefinition Height="1*"></RowDefinition>
</Grid.RowDefinitions>
<Viewbox Name="viewboxAnimUI"
Grid.Row="1">
</Viewbox> <!-- 这里放置刚才第一步的代码 -->
</Grid>

看出来了吗:1:5:1  上下空1比例的尺寸 ,中间留5比例尺寸。。。合适的大小;

加个

  Viewbox 这样 wpf 会自动处理内容控件的宽高等比例缩放!是不是很方便很强大呢。

第四部 上截图,上代码了:



下载:(由于博客园只提供30M的空间,用完后就得自己传到网盘里了,所以提供csdn下载,但是0积分啊亲。。。哎这年月容易么,上个码还不敢要分,感觉好的亲们。。推荐一个呗。。。)
http://download.csdn.net/detail/gwxyyuqiang/6962087

wpf 客户端【JDAgent桌面助手】开发详解(一)主窗口 圆形菜单的更多相关文章

  1. wpf 客户端【JDAgent桌面助手】开发详解(四) popup控件的win8.0的bug

    目录区域: 业余开发的wpf 客户端终于完工了..晒晒截图 wpf 客户端[JDAgent桌面助手]开发详解-开篇 wpf 客户端[JDAgent桌面助手]详解(一)主窗口 圆形菜单... wpf 客 ...

  2. wpf 客户端【JDAgent桌面助手】开发详解(三) 瀑布流效果实现与UI虚拟化优化大数据显示

    目录区域: 业余开发的wpf 客户端终于完工了..晒晒截图 wpf 客户端[JDAgent桌面助手]开发详解-开篇 wpf 客户端[JDAgent桌面助手]详解(一)主窗口 圆形菜单... wpf 客 ...

  3. wpf 客户端【JDAgent桌面助手】业余开发的终于完工了。。晒晒截图

    目录区域: 业余开发的wpf 客户端终于完工了..晒晒截图 wpf 客户端[JDAgent桌面助手]开发详解-开篇 wpf 客户端[JDAgent桌面助手]详解(一)主窗口 圆形菜单... wpf 客 ...

  4. wpf 客户端【JDAgent桌面助手】开发详解-开篇

    上周二 发表了一个帖子:wpf 客户端[JDAgent桌面助手]业余开发的终于完工了..晒晒截图... 没有想到不到一个周时间已经浏览量过8千,估计过几天就过万了..很开心啊.. 评论中好多网友问我要 ...

  5. wpf 客户端【JDAgent桌面助手】开发详解(二)桌面宠物制作详解

    目录区域: wpf 客户端[JDAgent桌面助手]业余开发的终于完工了..晒晒截 wpf 客户端[JDAgent桌面助手]开发详解-开篇 wpf 客户端[JDAgent桌面助手]开发详解(一)主窗口 ...

  6. javaCV开发详解之12:视频转apng动态图片实现,支持透明通道,也支持摄像机、桌面屏幕、流媒体等视频源转apng动态图

    wjavaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG. ...

  7. 基于H5的微信支付开发详解

    这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可 ...

  8. ****基于H5的微信支付开发详解[转]

    这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可 ...

  9. iOS应用开发详解

    <iOS应用开发详解> 基本信息 作者: 郭宏志    出版社:电子工业出版社 ISBN:9787121207075 上架时间:2013-6-28 出版日期:2013 年7月 开本:16开 ...

随机推荐

  1. Codeforces Round #526 (Div. 2) Solution

    A. The Fair Nut and Elevator Solved. 签. #include <bits/stdc++.h> using namespace std; #define ...

  2. 在使用swiper时,解决同一个页面使用多个轮播出现问题做法

    $(".swiper-container").each(function(){ $(this).swiper({ loop: true, initialSlide :0, pagi ...

  3. Win7系统(台式机)设置系统的窗口背景色(豆沙绿色)

    Win7系统(台式机)设置系统的窗口背景色(豆沙绿色) 1,桌面->右键->个性化->窗口颜色->高级外观设置->项目选择(窗口).颜色1(L)选择(其它)将色调改为:8 ...

  4. git am PATCH_FILE_NAME自动打patch失败后的操作方法

    1.找到打入patch不成功的patch 从打入patch的失败信息可以找到 2.根据patch的index重新打入 patch,将可以合并的内容合并,冲突的部分单独生成文件 比如出问题patch的i ...

  5. BZOj 墨墨的等式(转化为最短路)题解

    题意:中文题意不解释... 思路:这道题居然可以转化为最短路orz,要等式有非负整数解,我们可以转化一下:每个ai不限数量,问你能用ai数组拼出多少个Bmin~Bmax范围内的数,有点像完全背包的感觉 ...

  6. 【eclipse】svn在线安装

    Subclipse1.8 http://subclipse.tigris.org/update_1.8.x

  7. Spring IOC 源码简单分析 04 - bean的初始化

      ### 准备 ## 目标 了解 Spring 如何初始化 bean 实例 ##测试代码 gordon.study.spring.ioc.IOC04_Initialization.java publ ...

  8. [sql]SET NOCOUNT ON 的作用

    使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息. 说明: 场景1:(不使用SET NOCOUNT) 场景2:(使用SET NOCOUNT ON ) 场景3:(使用SET N ...

  9. Xmind8 (update8)破解教程

    环境:Win7 一.下载xmind: Xmind版本:xmind-8-update8-windows.exe  百度云盘地址: https://pan.baidu.com/s/1ccd18E1hOY1 ...

  10. appium+pytest+allure+jenkins 如何实现多台手机连接

    使用appium可以实现app自动化测试,我们之前是连接一台手机去运行,如何同时连接多台手机呢?很多人可能想到的是多线程(threading).今天分享一种比多线程更简单的方法,虽然不是多台手机同时运 ...