我认为是两点
一个是大家说的,发色可以提高人物区分度,帮助塑造人物。。
日本深夜动画当下比较“主流”的风格经常简化耳朵,鼻子,嘴,颧骨凹凸,皱纹伤疤等细节,且很多也是手绘动画,就算是三维动画本身就无法和三次元一样立体的感觉这么强。这样一来剩下的东西本身就不多,而脸型目前主要是鹅蛋脸与瓜子脸,而例如国字脸,大饼脸往往是给一些特殊角色的脸型。那么辨别人物的话除了眼睛、五官比例,头发本身就是重要的部分。各种各样的发型来区分角色,不但比五官好观察,而且作画也更好画。
目前很多动画里各种人物发色也是五颜六色,非常醒目,还会成为人物个性的一部分。而同一人设五官等画法往往相近,去掉头发单单只看脸非常像是再正常不过的事情。甚至你不要说去掉头发,你就算发色一个样,辨认难度都会大大提升。
尤其是多人物的情况下更是这样,闹不好还成为应援色。
同样不同发色也可以展现人物性格。
但你硬要说的话,我觉得还有成本问题。
因为深夜动画本身成本较低,而且本身是2d动画,立体感欠缺。原画层面上,面部细节少,而绘制人设的时候本身也会为了好制作,也会尽量相对统一。这样面部细节缺少很多,人一多更是这样。
动画电影还是国外的3d动画,可以有更多的面部细节,更立体的形象,发色区分的意义就不大了,闹不好还影响真实感。
我能想到的就是以上。
全文硬核分析,希望耐心看完,因为背后的故事水很深。
有人说是因为什么辨识度,这完全是不靠谱的,因为日本漫画原著是黑白的。
下面才是真正的来龙去脉。
说一个很少人彻底去分析的日本文化界秘密。
你可能曾经有过类似的疑问,但我很少见有人系统分析。
说之前,先讲一个典故。
刘邦当年还是草民的时候,他看见秦皇出巡,那场面真是华丽至极。
刘邦第一反应居然不是跪拜,而是心想:秦皇厉害啊,我好羡慕啊,我也要成为这样!
也就是有了刘邦那句名言:嗟乎,大丈夫当如此也!
——《史记·高祖本纪》
我突然意识到,这不就有点类似中国人对强势文明的态度吗?
看见强势文明,我们第一反应就是我们也想要这样强大!并且还要吸取对方的霸权教训,比对方做的更好!成为更好的中国,而不是下一个美国。
这不就是“嗟乎,大丈夫当如此也”吗?
不就是王侯将相,宁有种乎吗?
在三体小说里面也有类似的描述。
面对强大的外星文明入侵,有人选择成为“公知”式降临派,主动带路。
有人则选择成为人类文明的面壁者,坚决斗争到最后一刻。
如果说面对美国霸权,中国是面壁者。
那么日本毫无疑问就是主动跪下的降临派。
上世纪80年代的时候,日本的GDP就已经达到美国的六成,成为世界第二。
经济如此强大的日本,面对美国的刁难,最后却主动和美国签署了广场协议,主动自杀。
这一方面,固然有日本对美缺乏军事自主的原因。
但是日本为什么会这么平静的接受了对美自杀,就算你没能力反抗,至少你情绪得愤怒一下吧?
猪被宰还知道叫一声呢。
而日本人却非常平静的接受了这个事,甚至内心对美国充满了“感恩”。
在2018年,日本政府的年度内阁民意调查结果显示,84%的日本人对美国有“亲近感”。
他杀你,你却爱上了他?
不要说什么日本人天生就跪舔美国,这绝无可能。
任何国家的人都是有尊严的,特别是经济高速增长起来以后。
我分析发现日本跪舔美国并不是天生的,而是后天被人为塑造的。
——真相就是日本的“高晓松”们,他们成功了。
美国对日本的文化改造首当其冲的就是:“人种替换”。
以方便来虚无化日本,遏制日本经济崛起、增长带来的民族自尊心。
下面开始举例子:
这是著名日本动漫《火影忍者》的男主角漩涡鸣人,你仔细看看他的长相,你会不会感觉很奇怪?
忍者是日本本土的,按理说应该是黄种人,但是上面这个金发碧眼,实际上就是经典的欧美人特征对吧?
再比如,同期爆火的作品《死神》,这是其男主角黑崎一护,相比日本特征,是不是更像英国人?
这是作品《我的英雄学院》里面的救世英雄:欧尔麦特。(后简称欧弟)
简单说一下这个作品,你就可以理解日本对美国的单方面崇拜有多肉麻了。
《我的英雄学院》也是日本爆火的主流作品,讲述的是一个有超能力的世界,然后里面的普通人如何成为超级英雄拯救世界的故事。
而欧弟就是这个故事里面的万人偶像,被称为“和平的使者”。
你看看这个长相,加上美国国旗色系设计的衣服,这不就是美国人吗?
故事里面欧弟像美军一样常驻日本,然后在日本惩恶扬善。
本来我以为欧弟是美国人。
而后来根据剧情来看,我发现原来欧弟是日本人,不是美国人!他本名八木俊典,只是早年去美国待过罢了。
真相原来是:这个日本作者塑造了一个自己心目中最伟大的日本英雄形象,而这个形象的元素全部是——美国。
在日本,美国已经变成=伟大了。
日本人已经到了从骨子里希望自己能成为金发碧眼的美国人,恨不得整容都搞成这个模样。
下面这是《一拳超人》里面角色的King,设定是一个普通日本路人,是个日本宅男,属于幽默型角色,但是你有没有看见问题在哪?
这是哪门子“日本路人”、“日本宅男”?
这很明显是一个白人男性对吧?简直是长相不能再标准的欧美白人了,对吧?
你再去细想一下这背后的心理活动,能不细思极恐吗?
再次说明,日本文化界的作者,是有计划的在大规模搞“文化置换”。
一个全球来看国力不错的黄种人国家,在这个国家最强大的文化产业里面,在他们的热门影视剧里面,黄种人已经全部被置换了,全部换成了欧美人。
不仅仅是男性角色,女性角色也一样,下面这是《食戟之灵》的女主角,你觉得这是日本人,还是北欧人?
而且你再仔细看看上面这个图,看看背景角色的发色,如果我不说这是日本,你觉得这是日本,还是欧美?
最后说一个最有代表性的,很多80后童年回忆,日本的《七龙珠》,里面有一个设定,就是男主角可以变身成为战斗力更强的状态。
这是变身前,很明显是东亚人。
然后这是剧情设定,所谓从普通变成更强大的样子,就是标准的金发碧眼,很明显是欧洲人对吧?
亚洲人是不行的,是普通人的。
欧洲人就是强者,是我们要“换种”成为的对象。
这就是日本文化界的状态,以上举例作品都是日本的爆款主流作品。
如果说中国文化界状态是和公知对弈的状态。
日本就是直接趴在地上了,撅着屁股等美国粑粑来打。
整个日本文化圈就宣传一件事,认同欧美。
所以就不难理解,为什么日本签署广场协议以后经济崩溃,利好了欧美,而日本人很平静的接受了这个事实。
现在中文互联网一说起政治正确、病态多元化。
很多人第一反应就是欧美变态的叠Buff。
比如漫威电影,最新雷神要换成女的、下一代钢铁侠要换成黑人,女武神是同性恋、新美国队长也已经是黑人了。
从文化圈到政治,美国政治正确愈演愈烈。
反正就是要搞无数个身份标签,方便鼓动底层人内斗,要绝对避免一个团结的美国群众出现。
我说个事实,这一套美国最先是美国在日本开始实验的,只是很多人没发现。
还是用日本热门作品《死神》做例子。
《死神》故事整体来说,就是一个发生在现代的日本神话故事。
类似于现代人修仙的中国小说。
这种题材都是基于本国本土的神话故事,一般世界观很小,就局限在本土。
但是从角色设定来看,《死神》很奇怪。
首先是白人特征男主角。
然后甚至还有非洲武士,你看下面这个图。
政治正确本质就是对本土的虚无化。
欧美是白人为主的社会,资本要虚无、淡化白人无产阶级意识。
方法就是过度去强调非白人的族裔,强行捧杀,最后引发族群内耗,缓解阶级矛盾。
美国是日本社会的外来者,如果美国要在日本坐稳江山,肯定要虚无化日本本土黄种人的意识。
那么日版政治正确的配方就是,在纯日本本土化的神话里面,要加一堆“国际友人”。
你看下图,这是日本现代神话故事《死神》的两个重要角色,左边是个黑人,右边感觉向是个棕发的白人,反正不太日本。
实际上日本作品里面的美式非洲裔政治正确非常多。
这是《食戟之灵》里面的角色美作昴,看起来是日本名字,实际上这不就是一个非洲兄弟吗?黄种人会长这样?
再看看下面这个,这是《死神》一组角色海报,来分析一下人种。
右上角很明显是欧洲白人大波浪。
中间也是两个金发,反正不像日本人。
中间这个人,更像是一个编着脏辫的混血黑人。
上面这个角色叫爱川罗武。
下面这是他剧中的另一个发型,不是脏辫了,而是黑人爆炸头。也就是实锤这个角色设定就是参考美国黑人是没毛病的,反正没什么日本人特征。
最后,右下角是一个欧洲小太妹的样子。
这些人设定都是日本人,也都是日本名字,但是造型完全国际化了,没有一点点东亚社会的样子。
你就说说看,是不是仔细一看,日本政治正确比美国猛多了?
按照动漫圈子的戏称就是,日本漫画里黑皮、黄毛元素一定是齐全的。
(注:这个黑皮不是种族歧视那个意思,没有贬义)
那可能有人就纳闷了,你说的人种肤色政治正确是齐全了,但是LGBT呢?性取向多元化呢?
战后早就有了,而且已经做大做强了,就是和美国叫法不一样而已。
美国是统称叫LGBT,人家日本这边是分开叫:耽美、BL、同人、腐文化、伪娘、扶她,这些全部合起来不就是美国的LGBT吗?
而且最绝的就是,日本发展性取向多样化的时候,都没有忘记人种多样化。
你看下图,这是日本同性作品《花町物语》,这不就是亚洲人和欧美白人搞同性吗?比美国还“正确”。
美国的LGBT很早就有,但是做大做强是这几年才开始的,之前日本都不知道发展了多少年了。
搞不好是美国资本觉得在日本实验成功的差不多,也该本土玩玩了。
之所以日本的政治正确少有人关注,是因为日本人也进行了一定程度上的反抗。
1、用更多的多元对抗多元。
2、其次就是人物种族特征模糊化处理。
我举个例子,你去看日本动漫,你会发现日本动漫的发色过于丰富,丰富到了完全脱离社会基本面。
实际上发色丰富是日本人微弱反抗的结果。
下图这是1984年的七龙珠,你仔细看,实际上是泾渭分明的,金发碧眼的角色和黑发主流的东亚人对比还是很明显的。
总体来说漫画维持了以黑发为主的东亚特征,而加进去的欧美元素很突兀的,其他发色方面不多。
下面这是2012年的《食戟之灵》,你看是不是东亚社会特征几乎已经荡然无存了?
上面这个如果没人提前告诉你,实际上你根本认不出来这是东亚。
但是里面大量的欧美人特征也被淡化了,原因就是引入了大量其他发色。
打个比方,如果一群人主流头发都是黑的,突然出现金发就对比很明显。
但是如果什么颜色都有,那金发碧眼就不明显了,也就对冲了美国的殖民化,算稍微淡化了点。
再就是早年间日本老派漫画家都是很注重人物五官写实描绘的,但是后期写实画风基本没了。
对人物的描绘基本都是脸部高度抽象化、萌化、Q化的,完全看不出来人种。
我分析认为,后期可能是为了对抗这种硬塞“国际友人”的政治正确,日本动漫界开始大量搞五官抽象画。
全部五官抽象画,这样动漫里面欧美人和亚洲人的区别体现,就只是颜色不一样。
然后在加上前面的多彩发色。
这样曲线救国一处理,日本动漫里面强烈的白人特征,就没有那么明显了。
所以我认为日本动漫人物发色过于丰富,比全世界任何国家都过于丰富,全世界很少见这种夸张方法,实际上就是日本文化界一种微弱的反抗。
实际上你去想想看日本动漫是很怪异的,大量日本动漫人物设计完全脱离日本社会现实,完全看不见东亚人自豪感。
还是用这个图,看下面,毕竟日本和我们一样,都是东亚人社会。
就是说如果上面这个动漫是中国拍的,你觉得这动漫和中国社会是否高度脱节?
不是说动漫不能夸张,而是黄种人夸张以后,反应的也是黄种人社会的特征。
你是什么地方的国家,你夸张以后反应的也是当地特色。
美国动漫人物戏剧性夸张以后,你还能看出来很明显这是美国人,有显著的白人特征,宣传了西方人的文化自信。
但是日本动漫的黄种人、东亚人族群自信心表现呢?
日本动漫作品很强,但是这就好像日本经济一样,咋一看很厉害。
实际上不过是美国驻军殖民下的小心翼翼罢了。
以上这么说可能不明显,我贴一个强烈对比吧。
下面这是日本漫画家井上雄彦1990年创作的灌篮高手,相比以上,这是不是才更像是日本社会的动漫?
男主角虽然是红发,但是很明显是为了体现男主角性格的设定,整体社会特征就是日本社会的样子。
不过其实当年的灌篮高手也开始有政治正确的元素了,只是不多。比如下面这个图,你看左边,很明显左边这个人设定像极了非洲裔。
那种后来故意把日本角色画成“国际友人”的玩法,在灌篮高手时期就有了,只是当时还很少,不够密集。
下面这是,1998年井上雄彦在灌篮高手之后画的《浪客行》。和我前文说的《死神》一样,都是日本武士题材的漫画,相对来说,是不是正常很多?
《死神》给人的感觉就是:一群有日本名字的外国人,演艺着日本武士神话故事,而《浪客行》一看就是日本本土的。
越是日本动漫发展到后期,这种写实的风格就越少。
也许这就是日本人无声的反抗,如果你美国非要把日本动漫人物全部政治正确成“国际友人”。
那我日本干脆就彻底抽象化算了,搞一堆蓝发、绿发、粉红发去冲淡强加的黄毛和黑肤色!
这样的日本,对美自杀很正常。
我认为这些文化问题是美国强加的,并不是乱说的。
美国战后对日本的文化阉割,相关国内报道太多了,早就不是什么秘密了。
援引环球时报报道:
硬汉形象曾在日本“霸屏”,如上世纪七十年代风靡一时的电影《追捕》中,男主角高仓健就深受日本及亚洲各国观众喜爱。
高仓健也被称为“昭和年代最后一名硬汉”。
从昭和后期至今,硬汉在日本娱乐圈日渐式微,取而代之的是留长发、化妆、打扮中性的柔美男星。人们俗称的“娘炮文化”日渐盛行。
“娘炮文化”主要指从娱乐圈刮起的男人女性化现象,他们在着装、仪表、语言、动作等方面女性化,包装成小鲜肉、娘娘腔,缺乏男性本应有的阳刚之气。
而扶持娘炮的就是约翰尼·喜多川,还有他的杰尼斯事务所。
约翰尼·喜多川是日裔美国人,1931年出生于洛杉矶。
二战后,喜多川回到日本,先是在美国驻日本大使馆从事翻译工作,后来进军日本的演艺圈。
喜多川回国发展的时候,正值日本国内反美情绪高涨。
1954年,美国在太平洋的比基尼珊瑚礁试验了第一枚氢弹,造成在公海上航行的日本渔船23名船员伤亡,激起日本人新一轮抗议和反美热潮。
面对日本经济崛起企图脱离美国控制,美国资深外交官乔治·凯南认为要多使用日本人来帮美国控制日本,在这个背景下,曾鼓动日本青年侵略中国的战犯正力松太郎,就在美国的支持下创办了《读卖新闻》。
随后喜多川这样的人也就一起得到了美国的大力提拔。
喜多川回日本后第一份翻译工作就是为美国军事援助顾问团服务。而且喜多川演艺事业起步时培养的第一个“男团”主要给美军表演。
日本也有媒体试图深入调查喜多川背后与美国的关联,但参与调查的人士据称受到日本黑社会的威胁,导致调查无法进行……
那美国人真的就仅仅插手了日本的真人影视剧吗?有没有继续插嘴日本的动漫产业呢?
这样看,那日本动漫业内戏称,必须有的黄毛、黑皮(非贬义)、同性搞基三大元素,是不是美国强制规定的潜规则呢?
理解了以上内容,我们才能理解当我们作为一个和日本完全不一样的主权国家,我们在学习日本发展自己的动漫产业的时候,我们要避免的问题。
下面考点来了。
在2020年6月,湖南台金鹰卡通频道播出的动画片《菲梦少女2》被举报了。
观众举报的理由是里有染发、穿得花里胡哨在舞台上表演换装等问题,批评其价值导向有问题。
对此,当年湖南广电6月12日回应称,制作公司是为提高角色辨识度,才将人物头发设计成不同颜色,并非提倡染发。频道目前已停播该动画,并对问题进行了整改。
类似的情况还有2001年《《我为歌狂》这部青春题材动画片,播出后全国火爆,但是一样遭遇了大量家长的举报。
我这么说吧,我觉得社会主义教育下的中国群众反对,是很正确的!
这充分说明了一个主权社会的大国公民,本能的对殖民地来的文化影响,感到反感!感觉难以接受。
你拍乐队剧情就拍乐队呗,没必要学殖民地日本搞一堆发色,简直就和二流子一样。
人家日本搞一堆发色,是为了掩盖美国强制要求他们把主角人种画成白人的尴尬,我们有必要这样跟着学吗?
什么是真正优秀的本土化?
这是国产《白蛇缘起》和《凡人修仙传》的动画,给大家参考一下:
《白蛇缘起》画风也不是写实的,但是很明显就是中国人风格的美,头发是黑头发,不是日本那种花里胡哨的虚无化。
下面这是《凡人修仙传》的动画东亚人脸型建模,亚洲人有自己的帅气。
日本动漫的技术、技法可能值得学习。
但是在有一点上,也许我们并不用学他们,也学不来。
那就是对欧美文化毒素的无底线迎合。
我们是主权国家,中国崛起拍自己的乐队动漫,那么人物理应是基于中国社会的基本面,反应我们中国人自己的生活,把真实中国的美,去传达给全世界。
我不知道日本人是不是长这样,但是中国人绝对不能长这样,在我们社会,这种形象就是街溜子。
愿本文对国人有所启发,星星之火可以燎原,经济内循环必将带来国人审美的觉醒,而中国也必将以自己的姿态走向世界!
文章来源 公众号 每日怡见
全文硬核分析,希望耐心看完,因为背后的故事水很深。
有人说是为了掩饰日本文化被美国控制的事实,这其实完全不对。
下面才是真正的来龙去脉
大家应该都听过河中石兽的故事。说为了掩饰日本文化被美国控制的事实的人。就是犯了知其一,不知其二的错误。
试想一下,真的有国家能够拥有这种文化输出能力吗?我觉得不现实。所以美国很可能压根就不存在,是日本政府编造出来的一个国家。其目的就是为了让我们忽略真正的敌人,而去警惕一个根本不存在的敌人。日本人的狼子野心昭然若揭。我们应该时刻保持警惕。
你去问十个人法国战役时没有英吉利海峡拦着德军能否横扫英国?
其中九个人会告诉你:英国危矣
还有一个人会告诉你:这不可能
但就是没人告诉你英国能挡得住德国
提名1919席卷美国的猩红之夏。
图示是一名被处以私刑的黑人,他的尸体正在歧视的火焰中毕剥作响。
迫害黑人似乎并不那么残暴,但是这是发生在黑人解放后将近六十年之后的全国性迫害热潮。其残暴不仅仅在于对黑人的残暴迫害,更是对民主,对法治,对平等,甚至对人理的残忍暴凌。所谓的政治精英与民主卫士,正是迫害的最大推手。
不知道美国有什么脸面去说民主与平等。
(给文章点赞时麻烦给这个回答也点个赞同吧,如果能点个关注就更好了。祝各位新春快乐。)
哦,还有美国人在瘟疫时期的鬼才操作
外加一个加拿大的
那些评论烦死了!之前因为评论还被知乎制裁了,现在评论区封闭!
你但凡看过尤文一场球,都不会提出这么个问题来。
也只有C罗才能在这种情况下还能稳定输出一个赛季三十个球左右。
要是给梅西这么个教练,本坦库尔皮亚尼奇这种中场,内德维德帕拉蒂奇这么个建队策略,巴萨的阿比达尔和巴托梅乌每年花几亿给梅西引援都被梅西给炮轰下台了,阿涅利内德维德帕拉蒂奇那还不被梅西和粉丝给辱骂成历史的罪人啊。
梅西这些年欧冠年年惨案主要原因还是因为他自己散步导致的。
哦对了,皮亚尼奇现在就在巴萨呢,球都踢不上。
C罗一句怨言都没有,每场比赛也都尽心尽力了。不是C罗拼的那两个进球,意大利杯也要被国际米兰给淘汰了。
除今年以外,尤文欧冠淘汰赛所有的进球都由C罗包办。今年皮尔洛为了保欧冠资格过度使用C罗,导致C罗疲惫不堪,从16-17赛季至今,C罗的出场时间竟然年年在递增!
没有C罗这29个进球,本赛季尤文连欧冠资格都没有了。
这次舆论的重点在于警察到底是多久赶到的。
没拜码头,收保护费,打砸门面这种原因我们都知道,也不怕;
但是公权力私用或者黑白勾结这种事,就会让人非常害怕;
如果西安公权力真的黑白勾结,还睁眼说瞎话,那就需要处理整顿了。
我朝的治安也不是一直这么好的,人民也不是软弱无比的,60年代西安打的也很凶的。难不成西安各公司以后都要雇佣保安公司保护经营?
这次出警距离1公里,走路10分钟都到了,所以就坐等这次真实的出警时间是多少了。
很少有人不基于框架直接写GUI界面啦,我这个回答就从GUI框架反过来推什么语言做GUI合适。(只聊桌面端GUI编程框架)
几乎是C++领域最流行的跨平台桌面端软件开发框架了,这个框架是两个挪威人在1995年创建的,发展至今可以说历史相当悠久,稳定性也很有保障。很多大公司都在用它做界面比如金山的WPS。
它内置了自绘引擎,也就是说界面上的一个按钮,一个文本框,都是Qt的引擎自己画的,这保证了基于Qt开发的软件界面在不同操作系统上看起来是一模一样的。
它提供了大量的与界面无关但与软件开发息息相关的API,比如、网络、文件系统、剪切板等,而且让这些API在不同的操作系统下都有效,这极大的节省了开发人员的时间。
但它也有一些缺点,比如在处理一些特殊需求上很不方便,比如:目前Qt有没有比较好解决高分屏下缩放显示的方案?,Qt没有真正完美的无边框解决方案吗?等,在一些组件的渲染上也会出一些隐藏的较深的问题(QListItem),一旦遇到,就很难解决。
Qt近年来不太专一,qml,qtquick等,搞了很多,而且这些新玩意儿一直不温不火,有些模块做了又废弃了,比如:qt script,搞来搞去,搞的模块繁多且复杂,用起来不是很舒服。
Qt有界面描述语言(XML描述界面),可以通过设计器拖拽空间设计界面,编译期界面描述语言被转义成C++代码,性能上没啥损失。
Qt商业授权不太友好,开发商业应用一定要谨慎,之前听说有公司为此付出了高额的版权费。个人开发者可以免费使用。Qt的免费版本不允许静态链接,会有版权上的限制,但开发者还是可以通过一些特殊的编译方法静态连接Qt的库的。
除了使用C++开发Qt应用外,开发者还可以使用其他语言开发Qt应用,最流行的就是使用Python基于PyQt做Qt应用了,其他语言的绑定不是很成熟,但PyQt仍然有版权的问题。
GTK是1997年创建的,也非常成熟稳定,是C语言开发的,但有很多语言的绑定,比如官方支持的JavaScript、Rust等,当然用C++语言操作GTK也很方便,它也有自绘引擎(Cairo),也提供了大量系统相关的API,商业授权也非常友好,基于GTK开发商业软件不用担心收到律师函的问题,虽然它是一个跨平台桌面软件,但它似乎只在Linux操作系统领域流行,有非常多的Linux桌面软件都是基于GTK开发的。
这也直接导致GTK的维护者很重视Linux领域的发展,而忽视Windows和Mac领域。这个框架提供的很多API,只在Linux下有,Windows和Mac下没有。这样的API数量众多。甚至在Windows下编译一下GTK的源码都要比Linux下难很多。而且GTK的渲染引擎在Windows下性能表现也不如在Linux下好。
GTK在Windows上也没办法静态连接,它到不是因为版权的问题,而是它依赖MSYS2的一些库,这个库用于在Windows上模拟Linux环境,这也是为什么GTK在Windows上表现不佳的原因之一。
另外,由于GTK是C语言开发的,所以开发风格也很C语言化,这对于部分开发者来说可能觉得繁琐。
wxWidgets是1992年英国的一个大学教授开创的跨平台GUI软件,也非常成熟稳定,商业授权非常友好。它没有自绘引擎,而是对不同平台下的界面API做了整合和封装,这样开发者在Windows下开发的软件看起来就是Windows窗口风格、Linux开发的软件看起来就是Linux窗口风格,这对于某些软件来说,正是他们想要的,但要想搞一些花哨的特效就没那么容易了。它同样也提供了大量的系统相关的API供开发者使用。
它是C++开发的,所以对C++开发者非常友好,除此之外它还支持静态连接,也就是说开发个应用不用分发给用户一大堆dll,当然Qt也支持静态连接,但是你得自己编译Qt的源码(不是很方便),而且Qt的授权规则也不允许普通开发者这么做。
它会有些小问题,比如我之前提的:wxEVT_NOTIFICATION_MESSAGE_DISMISSED event emit twice,但总体来说还是非常稳的。除了开发的界面比较死板外,没啥大的问题。目前使用这个框架开发软件的人越来越少了。
fltk是1998年创建的跨平台开源GUI框架,历史悠久,商业授权友好,而且C++之父也用它,它非常轻量级,支持静态连接,一个简单的应用编译后只有500K左右,非常赞,
它有自己的自绘引擎,没记错的话用的是OpenGL,但它的重绘机制是按区域重绘的,如果组件A所在的区域上存在组件B,那么A组件重绘时,会把B组件的给重回掉,开发者必须自己写代码处理这种情况。想象一下,如果你想实现一个A组件fade out的同时B组件fade in的效果,就会非常麻烦。
FLTK提供的一些组件样式都比较刻板,绘图API也比较少,你想实现一个漂亮一点的圆角按钮(它内置圆角按钮的圆角大小是不能改的),必须自己画,而且还得借助一些非常奇葩的手段才行(如果你想知道,可以联系我)
它是C++开发的,但API不够现代,用起来总体还算舒服的,它有Rust绑定:fltk-rs。它的用户比前面三个都少。它提供了一些与界面无关的操作系统API,但非常少,几乎可以忽略。
Duilib
是2010年国内一个开发者开发的GUI开发框架,因为底层基于DirectUI开发,所以只支持Windows平台,不支持跨平台,开源协议友好,商用没有任何问题(需要附加Lincence文件),国内有很多大厂基于这个技术做桌面端应用,比如网易、腾讯、百度,这个框架是基于C++开发的,对C++开发者友好。但框架本身还有一些问题,比如对高分屏支持不佳、特殊控件绘制上也有一些小问题,除了界面相关的API外,几乎没有提供系统级的API,作者纯粹是用爱发电来开发这个框架,所以更新不是很及时。
相对来说网易基于Duilib开发的分支更完善一些:NIM_Duilib_Framework,添加了高分屏支持、多国语言、整合了多线程处理的支持,但环境搭建相对比较麻烦。如果开发者要用这个框架,一定要用develop分支下的代码,master分支下的代码问题很多,这个框架看上去也是作者一个人努力的成果。
Sciter是2006年创建的跨平台闭源GUI框架,足够稳定,商业授权不友好,但个人开发者可以随便用(只能用动态链接库),一旦公司规模超过3人,就得买版权了(有权静态连接)。
它内部封了一个浏览器核心,让开发者使用HTML,CSS,JS来创建界面,但对这个浏览器核心做了大量的精简,不像Electron和NW.js动辄上百兆的体积,它只要6M就够了。当然这也意味着有些浏览器特性它是不支持的,比如CSS3的flex布局,它就不支持(但它提供了自己的flex布局实现方式)。以前它使用自研的一个脚本语言(和JavaScript很像),自从集成了Fabrice Bellard大神的QuickJs之后,就全面支持JavaScript了。它还对一些特殊的场景做了内置的支持,比如渲染大列表。
它使用C++开发,对C++开发者很友好,有Rust、go、Python等语言的绑定,但都是社区提供的,质量堪忧。有很多知名厂商都用这个库做界面,比如360、teamviewer、赛门铁克等。
RmlUi和Sciter很像,可以看成Sciter的替代框架,但RmlUi这个项目有三界作者,一个一个的弃坑不知道新任作者会不会弃坑,目前还不是很成熟,比如我正在尝试帮作者解决的CJK输入法的问题,目前还不推荐大家使用这个框架。
CEF是2008年创立的,基于Chromium的跨平台GUI框架,稳定且商业授权友好,国内很多大厂都用的CEF:比如微信桌面端、网易云音乐桌面端、QQ桌面端、微信桌面端、MATLAB、FoxMail、OBS Studio,装机量破亿。
由于它几乎封了一个完整的Chromium,所以体积非常大,但支持所有的HTMLCSSJS特性,它几乎不提供任何与操作系统相关的API,创建个托盘图标、读写个文件啥的,都要开发者自己完成,它是C/C++开发完成的,对C++用户非常友好,它有gopythonjava等语言的绑定,但都是社区提供的,质量值得担忧。
它对Chromium封装的很好,避免了开发者直接与Blink、V8、Chromium等复杂的代码打交道,很多功能都有默认实现方式,遵从约定由于配置原则,有经验的C++开发者可以很轻松的驾驭CEF框架。
由于Chromium是版本弟,所以CEF版本发布也非常频繁,很多被标记为稳定的版本,还是会出一些莫名其妙的问题,选一个好的版本非常重要。
与Electron一样,它也是分主进程和渲染进程的,所以开发者要非常娴熟的运用跨进程通信的技术,虽然CEF提供了跨进程相关的API,但复杂度还是有点高的,使用的时候要认真细心。
这是微软的跨平台GUI框架,不仅仅支持桌面端,还支持移动端,但官方并不支持Linux的桌面端(黑人问号,感觉与微软近些年向开放、开源的大方针相悖),这个框架新的狠,至今还没发布稳定版。目前还没什么人用。而且不知道将来会不会被微软放弃。
它是.NET平台下的GUI框架,有自绘引擎,对C#开发者很友好,界面依然是用XAML描述的,可能很多人一听到XAML就直接弃坑了。XAML表现力确实弱一些,我觉得WPF没火起来跟XAML有直接关系。
使用这个框架开发桌面应用得封一个.NET框架给用户,当然有了.NET框架应用程序访问一般的系统级API也就不成问题了。
这是JetBrains搞的跨平台GUI框架,也非常新,前段时间刚刚推出1.0.0版本,但这个版本还不是很稳,至少比Flutter Desktop的第一个稳定版要差很多。同样也几乎没什么人用。
它的自绘引擎用的是Google的skia,这个自绘引擎稳的很,Chrome和Flutter都是用的它,所以排版、绘制、渲染之类的工作不太会出问题。比Java生态圈里的Swing和JavaFx要好很多。
JetBrains的东西当然对Kotlin开发者友好啦,Java生态下的很多东西你都能用,访问系统级API也没啥大问题,同样也得考虑封一个JRE给用户。
这是谷歌的跨平台开发框架,开源、免费、文档齐全、投入力度大且持久,同样也新的很,Windows版本刚刚发稳定版,Mac版本还没稳定。
如果你完全没搞过移动端的flutter,想用这个框架开发桌面应用,那么意味着你要学的东西还挺多的。好在dart和flutter入门都不是很难,学习曲线比较平缓。
由于flutter在移动端积累了很多年,所以界面上的一些东西在desktop端都比较稳(skia自绘引擎),与操作系统相关的东西还不成熟,生态也不太好,比如你想订制一下窗口的标题栏,想访问一下注册表这类工作可能得自己想办法。不过它有类似FFI的支持,跟C/C++语言打交道很方便。
开发者直接使用Dart语言描述界面,这会导致众多大括号嵌套在一起的问题,可能很多开发者不习惯。
这是微软Edge浏览器团队推出的跨平台GUI引擎,是闭源的,目前只支持Windows,对C#和C++开发者友好,如果使用C#开发,就得考虑把.NET运行时分发给用户,如果使用C++开发,就得自己处理系统级API的操作,webview2本身是不对系统级API做封装的。
这个框架推出也没多久,很多API也还不稳定,更值得担忧的是这个团队,他们前不久刚刚放弃了自己的浏览器核心转而使用Chromium浏览器核心,不知道他们会不会放弃webview2这个框架。
它的优势是可以复用系统当中已存在的webview2二进制资源,也就是说它虽然封了一个Chromium浏览器核心,但如果你可以确定客户电脑已经存在了基于webview2开发的应用,你的安装包体积可以足够小。
它也是多进程架构,甚至比Electron还要多一个进程(为了复用二进制资源),资源占用比较多。
这个库使用操作系统的浏览器引擎来达到减小安装包体积的问题,Mac上使用Cocoa/WebKit,Linux上使用gtk-webkit2,Windows 10上使用Edge(也就是上一个小节里提到的webview2),它应该是不支持Win7的。开发者要考虑前端代码浏览器兼容的问题。
开源且免费(MIT)有go、Rust、Python等语言的绑定,不过官方支持的是go语言,C和C++,操作浏览器的API非常少,不支持自定义scheme,更别提系统级API了。
采用的技术方案与webview类似,所以安装包也足够小,非常新,还没发布稳定版,开源免费。webview框架碰到的问题TAURI都有,
使用Rust开发,将来会支持Deno,作者说将来会直接使用webview的技术来支持多平台,
NW.js最早把Chromium和Node绑定到一起,用前端知识做界面,用Node技术访问操作系统,最早叫node-webkit,在2012年创建。NW.js基于MIT开源,可以无忧使用。没记错的话,微信小程序开发工具是用NW.js开发的。作者是英特尔的员工,英特尔的一些工具也是用NW.js开发的。
除了Chromium和Node的能力外,NW.js自己也封装了一些系统级API,类似托盘图标、剪切板、系统菜单这种,但数量明显比Electron要少。
NW.js可以在多个窗口间共享同一个Node.js上下文,而且还可以通过配置让Node的上下文和Dom上下文混合,这给开发者带来了很多便利。心智负担减少很多。不像Electron要时刻想着进程间通信,哪些模块当前进程不能用这类问题。
NW.js虽然起步早,但奈何没有杀手级应用,周边的生态和工具链没发展起来。用的人越来越少,维护的投入也不如Electron大,再加上Chromium更新非常频繁,导致NW.js的有些API也不是很稳,恶性循环加剧。
Electron的作者曾经在NW.js团队工作过(NW.js项目贡献第二多的人就是Electron的作者),后来辗转到了github公司,于2013年在创建了Electron,也是个开源免费的产品。由于VSCode、slak等国际型产品都选择了Electron,所以从者甚众,生态和周边工具链也完善的多。虽然开发方式上有点蹩脚的地方(多进程架构及模块归属进程),但瑕不掩瑜。
Electron每创建一个窗口都会多一个进程,这使Electron创建窗口的效率不高(秒级),NW.js有复用进程的机制,即使新窗口加载完全不同域的页面也不会创建新的进程(毫秒级)。这也是为什么很多基于Electron开发的应用都使用Dom模拟弹窗的原因。
无论是浏览器相关的API,还是系统级API,Electron提供的都比NW.js多。
--------2022-02-25更新--------
这些框架除了对开发者使用的编程语言有要求外,还有一个重要的差异就是有没有独立的界面描述语言(也就是UI DSL),这非常重要,涉及到一个框架表达业务的重要能力。
类似XAML、qt的ui文件、HTML+CSS都是界面描述语言,下面这种也可以算界面描述语言,但我感觉它不够纯粹(flutter、qml和Compose Multiplatform都是类似这样的):
panel { row { checkBox(...) row { textField(...) // indented relatively to the checkbox above } } }
但无论如何,显而易见的是,没有任何一个界面描述语言能比的上HTML+CSS组合。想想看:HTML里各种花里胡哨的语义化标签和Dom操作技巧,CSS里的布局方式、伪元素、动画描述...,对比之下你就会觉得XAML、qml直流都是弟弟。
除此之外,一个优秀的GUI框架还有两个重要的需求,这里我简单聊聊:
强大的事件处理机制必不可少。
想想这些:鼠标事件、键盘事件、触屏事件...界面加载完成、媒体播放结束、元素大小改变...网络状态变更、数据段传输完成...另外,还得处理事件冒泡、事件捕获、事件分发吧...
qt的开发者曾经说过qt的SIGNAL和SLOT机制是有性能问题的(但影响很小)
强大的异步处理机制必不可少
你不能在用户处理业务逻辑的时候,让界面渲染工作阻塞,这就需要一个强大的异步处理机制,让开发者自己去开线程去完成业务处理,无疑是又麻烦又会增加开发者的心智负担。
我记得很早之前在C# WinForm应用中,点击一个按钮,如果不用Invoke执行逻辑处理的话,界面就会卡死。
这么看来,在你的GUI应用里包一个浏览器核心还是挺有必要的,这样你就可以用HTML+CSS强大的能力来描述你的界面,用JavaScript强大的事件处理机制和异步处理机制来完成用户交互。
可能有人会想,这会带来很多问题呀,比如应用体积会增大的100M以上、会占用更多的CPU和内存资源,还会更耗电等等。
确实,目前来看这些都是问题,但仔细想想,这些问题应该不会持续太久,网络会变的更快,用户的磁盘和内存会变得更大,CPU处理能力也会更好,耗电的问题当然会持续存在,甚至会愈发耗电,但电的供应会持续增长呀。
web相关的技术之所以胜出,并不是这些技术的设计者有多厉害,而是这20多年间,有大量的人涌入了这个领域,前赴后继的推动着它前进。其他任何一个领域都没有这么热火朝天的景象。推荐大家看看我的另一个回答:
------------2022-02-27更新----------
用Web相关的技术做GUI应用的优势是,让开发者可以把大部分精力投注在业务本身上,而不是处理与GUI相关的技术细节。
实际上所有的框架,都应该是这个目的,比如ORM框架,目的应该是让开发者把大部分精力投注在业务与数据之间的关系上,而不是管理关系型数据的技术细节。
当然这肯定是有损耗的,在性能、稳定性、资源消耗上,都会有所削减。而且,因为有框架的存在,开发者很难深入到框架内部做一些特殊的事情。比如,我们该如何修改HTML的排版渲染机制呢?
所以,有些框架注重性能,有些框架注重开发效率,开发者做选择题的时候也应该衡量这两个问题,你的应用对哪些方面要求多一些呢?
你如果要开发一个视频监控系统,没多少业务功能,但要24小时不间断的记录视频数据,随时调取某一段时间的视频数据,这种应用可能Qt是最好的选择。
你如果要开发一个类似飞书的团队协作应用,业务逻辑复杂的一塌糊涂,而且要在短时间内满足更多用户的需求,占领更多的市场,那么Electron可能是更好的选择(目前飞书已经不再用Electron了,他们自己编译了Chromium核心,自己封了一个类似CEF的框架)
目前微软、谷歌、JetBrains等公司都非常重视桌面端开发框架,也在推各自的框架产品,说明桌面应用领域并没有没落,反而应该更加受到重视。
虽然移动端应用大行其道,但我认为,只有生活、社交、轻娱乐等方向上的应用在移动端有较好的发展。文档协作、大型游戏、开发工具、专业管控软件等应用还是在PC端发展的更好一些,毕竟PC端有更多样的输入输出设备、更广阔的显示和交互的空间,更强的存储和计算能力。
希望桌面软件开发领域的从业者都能获得幸福。
满屏荒唐言,一把辛酸泪,一把辛酸泪,一把辛酸泪...
可行啊为什么不可行,免费医疗项目越多覆盖的人群越广,越可以让大家认识到现代社会下人类自然寿命到底有多高
可行啊为什么不可行,免费医疗项目越多覆盖的人群越广,越可以让大家认识到现代社会下人类自然寿命到底有多高