MFC界面库

http://blog.csdn.net/cddchina/article/details/38759485

无奈就业之压力,不得不先放下 iOS 开发之就学,开始活动及久刷题路。

正好开用C++做界面的上,根本不掌握怎么用简陋的MFC控件做出比较漂亮的界面,后来尽管起来逐步接触到BCG
 Xtreme ToolkitPro
v15.0.1,Skin++,等界面库,以及部分网友自己写的界面库,开始对C++软件界面美化有了一点点的体验。不敢藏私,希望与部分新手朋友等享受交流。

今天本身想聊聊 LeetCode 上之第279题-Perfect
Squares,花了挺长时间的,试了累累方,作为一个算法新手,个人感觉这题很好,对本身的档次提升大有辅助。我在此地跟大家享用一下我之想法。下面是问题:

 

Given a positive integer n, find the least number of perfect square
numbers (for example, 1, 4, 9, 16, … ) which sum to n.
For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given
n = 13,return 2 because 13 = 4 + 9.

    一.  开源C++界面库

大概意思就是是,“给一个正数 n, 找到与为 n 的平方数,
给有最少的平方数个数”。

  www.4688.com 1

BFS

我正好开头想到的是为此 BFS,经过一番履行,感觉代码是本着之,但是 Time Limit
Exceeded
。毕竟用了 2
层循环。于是我虽找了个字典(Dictionary)来存已经算过的节点,比如一个十分要命之数
n,有非常可怜几乎带队 n – i * i 这个节点和后面算出来的 m – j * j
是等的。那么即便不再另行计算。但是,还是过了。这有代码2单小时前于我丢了,我哪怕无在这边再次勾了。

1.RingSdk

Lagrange’s four-square theorem

此地终于完全用数学知识解决了是题目。不知晓季平方和定理的伸手参考
wikipedia。话说童鞋们最为难英文版的
wiki,别翻译成中文比较好。我吧无说英文更标准,虽然看似就是是这么回事 ==
因为发个公式非常重大,而打消这题都仰赖此公式:

www.4688.com 2

夫定律就是讲话,任何数都好由4单平方数组成,即 n = a^2 + b^2 + c^2 +
d^2,所以这题的答案就限制在了 [1,4] 之间。

只要地方这个公式的发明者-Adrien-Marie
Legendre
又补了这个定律:除了满足以上是公式的数以外的另数还好由3单平方数组成。所以,这个答案而可以缩小范围了。范围都曾经缩小到
[1,3] 了,我们开始求解。

事先消除4个底状态:

    while myN & 3 == 0 {
        myN >>= 2
    }

    if myN % 8 == 7 {
        return 4
    }

因1跟2之情景较轻排除,先拿1及2之排除。

    var index = Int(sqrt(Double(n)))
    while index > 0 {
        let tmp = Double(n - index * index)
        let sqrtTmp = Int(sqrt(tmp))
        if n == sqrtTmp * sqrtTmp + index * index {
            return sqrtTmp == 0 ? 1 : 2
        }
        index -= 1
    }

方的代码就是说,如果一个再三由2单平方数组成,如果中间一个平方数是0,那么尽管是1,如果无是0,那就是是2。

剩余的虽是3了,直接 return 3
就实施了。在掌握之数学公式的景况下,这个方法还是那个简短的。

   
Ringsdk是CSDN上一个长辈自己写的界面库,这个界面库很容易实现QQ2009的界面效果。链接见 

DP

本身刚刷题没几龙,对于 DP
的演绎过程还非是殊娴熟,琢磨了漫漫。一旦琢磨出了,又当好简单,换一书写,又有何不可琢磨一年。lol

中低档的 DP 的下方式多就是 Recursion +
Memorization,就是递归和缓存。这里我们因而一个数组来囤积已经算是了之累之至少平方数的个数
(记作 minNum)
。从1开始算(从0也没事)。

这里我们分开2层来算,外层循环是计算起1暨 n的相继数之无比少平方数 minNum,
存入到数组中,数组的 index 表示数 n,里面的 val 表示
minNum。关键是请每个数之 minNum。这里我们因此到递归,核心代码就是:

let tmp = val - i * i
minNum = min(minNum, tmp == 0 ? 1 : 1+sta.record[tmp])

tmp 代表 val 减去一个平方数剩下的再三,如果 tmp == 0,就代表 val == i *
i,即其由1单平方数组成;如果 tmp != 0,就那么我们尽管得要求为 tmp 为 val
的 minNum,也就是是 tmp2 = tmp - i * i ,这个 tmp2 即使一定给前的
tmp。为了求 tmp 的 minNum,我们得算出 从1至 sqrt(val)
之间有的或者价值,然后取最好小值。最后用很最小价存放到数组中。最终代码就是

func numSquares(n: Int) -> Int {
     var record = [0,1]
    while record.count <= n {
        var val = record.count, minNum = record.count
        for i in 1...Int(sqrt(Double(val))) {
            let tmp = val - i * i
            minNum = min(minNum, tmp == 0 ? 1 : 1+record[tmp])
        }
        record.append(minNum)
    }
    return record[n]
}

只是跑了后来以发现,我特喵的不易啊,怎么时间而是这么长,1400ms。如果拿个小大点的数放到
playground
里走同飞就见面发觉,循环次数要老多的。所以这边虽需考虑到把数组存成
static,而 swift 是不得已在 function 里直接申明 static var n = 1
的,我们需要将 static 放在 class/struct 里,参见 SO
大神的解答,还有官方
doc。

可拿这 struct 放在 class Solution 里面,也得在外边,最后时光是
60ms 左右。从 1400 到 60,还是可以的。

struct sta {
    static var record = [0,1]
}

或者从短短这么一篇文章你尽管早已圈下了有 swift
语言的风味,最深之表征就是是种类安全。求个穷还设
Int(sqrt(Double(n))),我以前是故 C++
的,遇到这种状况还是出接触膈应的。但实际 swift
的亮点绝对是足以叫自家平安无视这些小麻烦的,其实习惯了后就是觉得是再度便宜,更安全了。

  http://blog.csdn.net/ringphone/article/details/2911244 
 貌似Ringsdk和MFC无法进行相互,但是
RingSdk其中有诸多之图形处理的代码都挺有参考价值。

最后

各国首稿子我都于用心写,希望对的童鞋能一起读书共同前行。如果爱自己不怕伸手关注我啊,点个♥️表示鼓励吧~

近来貌似 RESTful 很生气,如果您针对 MongoDB 或者 RESTful
感兴趣,请圈自己的当即首稿子,我因此
MongoDB 作为后台数据库,用 AngularJS, Spark, Java 做了单网站 demo,建被
Heroku 上。每一样栽技术都是及时最流行的技术。

终极强烈推荐喜欢 swift,并想用 swift 写算法的童鞋,Swift Algorithm
Club,你值得拥有。


欢迎转载,转载请注明出处。

 

2.redui之官方网站http://www.redui.org 已经从不起来了。官方QQ群是 40729296 

CSDN地址是 
http://blog.csdn.net/jameshooo/article/details/6677272

当下是官方的辨证

REDUI,又名REDirectUI,全称是Rendering Engine for
DirectUI,是同等悠悠基于XML描述的 DirectUI
渲染引擎,能以“控件”的彼此与渲染过程分解成多单身的元素,包括布局、视觉效果、样式、UI自动化、滤镜、脚本、事件、3D场景、3D模型、通用动画等。通过这些因素的排列组合,可以表现出各种不同功效的控件,甚至会当XML中直接从定义控件类型。支持2D/3D无缝融合。
• REDUI支持GDI/GDI+/DirectDraw/D3D等渲染方式,并起支撑OPENGL/ES的愿

 

3.Duilib
之就较好名鼎鼎了,不用多说了咔嚓。包括华为网盘在内的浩大标准公司还以就此这界面库。我用Duilib做了一个小型的界面。贴出献丑一个。

www.4688.com 3

 

4.WGI-1.0.7-Demo-Project-for-windows
。。额。。时间最长,忘记了此代码是呀,姑且先忽略她。

 

5.cj60lib 此游戏了Gh0st3.6木马的人口犹如数家珍,是同一缓慢对MFC进行进行的界面库

6.金山界面库 这个就是无赘述了,可以一直上金山的论坛找源代码和材料

7.skinTK_V0.20 一缓缓类似于Skin++的开源界面库

8.FreeCL_Skin2.3 一放缓不错的控件库 扩展了常用的MFC控件 。
 这个是FreeCL_Skin提供的一个功效实例。

www.4688.com 4

 

9.GuiLib1.5 一个老外写的界面库
没有因此了,没有调查,就从未有过发言权。大家自行百度。

 

10.基给3D的界面库 MangoGUI_V0.1.5

 

MangoGUI是猫仔在DXUT基础上改得来之一个开源GUI系统。

时吧基本上继承了DXUT里面大部分之效果和改良了采取方法,让DX学习爱好者又易失去用GUI系统。

一经您啊是平等个对GUI有兴趣的同班,非常欢迎你一头来与届MangoGUI的设计中来!

作者博客

http://m9551.blog.sohu.com/

 

11.基于Skia的directui库metalbone

代码托管地址

http://code.google.com/p/metalbone/

官说明

MetalBone是一个C++
DirectUI库。接口、命名等借鉴Qt,而不要以Windows风格。

MetalBone的性状是,使用CSS来定制样式(如果没CSS的言辞,则什么呢未显,lol)。目前得使Direct2D还是Google
Skia来绘制界面。MetalBone使用的凡 WWM协议(基于LGPL)

 

12.SonicUI2011

效能比不错的同款皮肤库

作者CSDN地址是 

http://my.csdn.net/akof1314

 

13 基于OpenGl的界面库 beGUI-0.1.3-src

代码托管地址

 http://code.google.com/p/begui/

 

               二 未开始源或商业界面库

www.4688.com 5

 

1.Flash4UI 

 看命名就知晓是用Flash嵌入到UI中。

官方网站是  http://www.flash4ui.com/

效能图片

www.4688.com 6

 

2.bolt 迅雷7界面引擎

迅雷界面引擎,这个用了迅雷下载和迅雷看看的便闹体会了,界面的确是举行的老之称赞。而且流畅,CPU占用和内存各种都格外棒。采用了剧本交互的计,脚本语言采用了Lua.可惜的凡迅雷只开放了接口SDK给个体以。

合法网址 http://bolt.xunlei.com/

 

3.clayui

百度百科说明  
clayui是一个应用纯C++编写的界面框架,可以非常方便之移植到各种系统及。现在支撑之系统包括Android,windows,wince,Linux。clayui的表征是能够实现各种2D,3D动画,一些WPF,FLEX才能够落实之界面效果,通过clayui可以充分便利的兑现。
clayui的底色渲染支持纯软件渲染,d3d,opengl
es硬件加速渲染,您可根据本人的需要选择适当的渲染方式,使你界面的用户体验及最佳功效

效果

www.4688.com 7

4.DSkinLite

合法网址  http://www.uieasy.cn/dskinlite/

官方Demo

www.4688.com 8

 

5.libuiDK

官说明:LibUIDK是国际直达顶尖的正规化开发Windows平台下图形用户界面的开发包,也是境内率先迟迟商业的尖端界面开发工具。该出包基于Microsoft的MFC库。使用这开发工具包可自由把画制作的精美界面用Visual
C++实现,由于LibUIDK采用所展现即所得之道创造产品界面,所以巨大的加强了活之支付速度,并大大加强图形用户界面(GUI)的亲和力。LibUIDK还可使您的软件轻松拥有当今风行的换肤功能,以提高产品的竞争力。

官方网站

http://www.iuishop.com/index.asp

实例

www.4688.com 9

 

  1. SiteUi   SkinSE  都发出官方网站。就不继续搬砖的办事了。

 

7.(未开源)上海勇进UIPower

以此比较牛逼。一款界面库就是非常几百万底。老总阙海忠还亲自录了20集聚的界面库相关的视频

官方网站 http://www.uipower.com/

顿时是老阙的视频。

www.4688.com 10

 

8.炫彩界面库

炫彩界面库貌似是自己人开发之一个界面库,可以为此C++.c#轻语言等来支付。炫彩库的作者貌似是湖北襄阳人呀。

官方网站 http://www.xcgui.com/

9.魔方界面库

官方网站 http://www.muilib.com/

MuiLib(Magic UI
Library)Windows高级界面开发库是于境内首寒免费开源之DuiLib界面开发库基础及经过对的扩展而上扬起来的,他继续了DuiLib高度自由灵活的性状,并接收了任何界面库的一对独到之处,针对Windows层窗口按像素透明技术使首要优化后形成的一个完美界面开发库,是一个采取纯C++调用Windows
API的开发库,无其他其他第三正在依框架,您得利用该提供的各种高档控件来创造更加炫酷的用户界面

 

10 XtremeToolkit

鉴于Codejocwww.4688.comk
公司出品的同款界面库。应用也是比普遍的。在2013本子的大灰狼远程操控着尽管下了这款界面库。

 

11.Sharpui

代码托管地址  https://github.com/china520/sharpui

Sharpui是地处现在风靡的DUI思想的均等模仿界面库,可以方便实现半晶莹剔透与各种界面效果,采用纯c++实现,分为引擎以及控件两单部分,这半只有应用动态库的形式提供,引擎部分处理了风波、资源、渲染、控制逻辑,同时提供了各种应用范围控件的落实基类,包括:Visual、Element、FrameworkElement、Control、ContentControl、Window、Panel、Popup,这些近似包装了基础控件的落实细则,所有用户实现的控件都必须连续自这些类似,对于用表现的控件必须继续到FrameworkElement。
控件部分提供的备控件均使用DUI方式实现、分层绘制,实现各种常用的布局控件,可灵活实现界面的全自动布局;Sharpui本身装有数据结构利用原生实现,内存自动管理,不指让std的其余容器,使得库底运用更为独立、编译更加简明,使用VS任意一个版本编译都足以据此当其它版本里,不欲担心由于std版本原因只要发出编译问题。

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website