问题描述
先说下背景..是windows的机器连接一个"触屏"的设备.外形类似手机,不过比他大很多.你可以想象成车站买票那种设备(自动贩卖机).现在要开发一程序在"windows"上面运行.对方给的需求中.有很多(大部分)都跟安卓的特效有关.比如"在咨询区左滑动.淡入显示'设置'面板"附图几个如下.包含了半透明.按钮(这些还好说)最后一个实际上是列表.上拉删除.左右选择.并且可以修改.(跟IOS的任务管理器差不多)而且那个时间.是跟安卓里面的计时器是一样的(旋转时,手指后边有一圈尾巴,里面时间跟着变化)并且里面还有视频拍照扫描截图(AForge)以及串口操作.所以这种情况下我要用什么"语言"开发呢?因为我能选择的语言有限.所以来问问.winform的话,一些特效是很费劲实现的..比如淡入淡出的控件滑动的事件,并且"半透明"控件这玩意.闪的厉害(无解,能试的差不多都试过了.)wpf不会.win8appwin10app我又没接触过不知道是什么玩意,安卓就更别说了.jqm我想过的也就是cs+bs.这勉强算一种方案吧.但是这还得用CefSharp的浏览器因为jqm在普通的浏览器控件上面是呵呵的.所以...现在连最基本的方向都没有了...
解决方案
解决方案二:
要不你用reactnative吧……前端可以的话上手挺快的
解决方案三:
智能家居么。。现在市场好吗?
解决方案四:
另外不管它是什么触屏设备,它运行的OS也就那么几种,很多医院里面的那种机器里面其实就是windows系统,所以你先不管它的交互如何像android,先确认它到底是什么系统,然后才能进行对应的技术选型
解决方案五:
引用3楼starfd的回复:
另外不管它是什么触屏设备,它运行的OS也就那么几种,很多医院里面的那种机器里面其实就是windows系统,所以你先不管它的交互如何像android,先确认它到底是什么系统,然后才能进行对应的技术选型
就说是windows吧,.你看如何解决.
解决方案六:
如果是windows的话,那最好的选择就是wpf,但你的描述中更多的操作是移动端的操作体验,WPF来实现也不是很好,而且你也说了不会,这时候我觉得UWP是个比较好的选择,同样不会,但UWP至少挺适合这种类型,就看你肯不肯做尝试了,叫我的话我就趁这么好的机会开始弄UWP或者ReactNative,当然前提要跟公司里面的人员说下存在技术风险,而且可能会因为对新技术的不熟悉而遇到各种坑(这两种技术也都算是这一两年才出来的新技术吧,没坑那是不可能的),导致自己也挺苦的,但值得
解决方案七:
如果你只会用Winform的话,找套控件就OK了,如:C1、DEV。。。
解决方案八:
如果人家把项目需求已经拿出来了、很明确、交互设计很细致,那么就不要当儿戏去选错了工具,否则就会一下子就被扔出局了。winform根本没有任何“性感的”图形系统设计框架,且控件通常都不能轻松地对控件内部模板和配置进行自定义,早在6、7年前就应该淘汰给wpf/silverlight了。但是如果你们没有xaml和blend进行动画设计的经验(找两本比较经典的wpf、silverlight的2d/3d游戏系统开发的书,就能理解这个了),那么肯定也还是在那里纠结传统的winform的那些编程套路,应该也做不出什么漂亮界面的程序。使用jqm显然有性能问题、代码工程化问题(管理1万行代码几百个模块后,你们不会疯掉,面对上千个jsbug仍然可以调试和测试清除几乎所有脚本代码中的问题)、和访问windows系统设备驱动问题。因此如果你们有javascript大系统的经验,可以考虑。如果只有一般的做企业web管理页面的经验,不要轻易用脚本来开发商用“大”点的系统(还是回到wpf)。
解决方案九:
用WInForm或者WPF就可以做桌面应用程序
解决方案十:
那还不趁这个机会学习一下WPF。
解决方案十一:
等待楼主做成功后,反馈一下。
解决方案十二:
卧槽卧槽,我来打酱油咯
解决方案十三:
ฏ๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎吼吼吼~~继续来装个b
解决方案十四:
引用5楼starfd的回复:
如果是windows的话,那最好的选择就是wpf,但你的描述中更多的操作是移动端的操作体验,WPF来实现也不是很好,而且你也说了不会,这时候我觉得UWP是个比较好的选择,同样不会,但UWP至少挺适合这种类型,就看你肯不肯做尝试了,叫我的话我就趁这么好的机会开始弄UWP或者ReactNative,当然前提要跟公司里面的人员说下存在技术风险,而且可能会因为对新技术的不熟悉而遇到各种坑(这两种技术也都算是这一两年才出来的新技术吧,没坑那是不可能的),导致自己也挺苦的,但值得
这个版主说得很完整很不错啊~我猜楼主的需求是模拟目前移动端(不限Android吧)操作方式与界面风格来做这一套系统,而且是要做到触摸屏设备里面的,操作上估计更加追求与移动端体验的一致性。而对于楼主来说,WPF、UWP同样未接触过的情况下,学UWP不是更好吗?移动适用。
解决方案十五:
各做一个版本多好。都学了
解决方案:
如果是windows的话,用WPFUWP都可以,但是都得学新东西
解决方案:
我们以前做自动贩卖机的程序,估计就跟你这个需求类似。。。后台.NET写的服务,UI是QT写的。。。那个叫QML啥的东西特效还是很流弊的,至少用winform弄死也做不出来。。。需求方只说是在windows环境下,可以考虑的就多了吧
解决方案:
前面说的wup也不错啊。。。qt是c++的,至少wup的上手难度对C#写熟的人很快
解决方案:
建议用WPF,通过内嵌CefSharp.wpf这个开源控件加载HTML页面即可,如果是写的H5,支持屏幕操作。
解决方案:
使用windowsapi提供的UpdateLayeredWindow函数可以做到和上面一模一样的效果但是遗憾的是如果你像做的完美那么所有的控件你都要自己去绘制了还有一个简单一点的方式就是反正到时候你这个程序肯定是全屏运行的当需要弹出一个窗口的时候直接使用伪透明方式就是一个窗口弹出来的时候先获取当前屏幕图像然后窗口弹出来后把图片作为背景就像这样publicpartialclassForm7:Form{publicForm7(){InitializeComponent();this.FormBorderStyle=FormBorderStyle.None;this.Location=Point.Empty;this.Size=Screen.PrimaryScreen.Bounds.Size;}privatevoidForm7_Load(objectsender,EventArgse){this.SetBackground();}privatevoidSetBackground(){Bitmapbmp=newBitmap(Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height);using(Graphicsg=Graphics.FromImage(bmp)){g.CopyFromScreen(0,0,0,0,bmp.Size);using(SolidBrushsb=newSolidBrush(Color.FromArgb(125,0,0,0))){g.FillRectangle(sb,0,0,bmp.Width,bmp.Height);}this.BackgroundImage=bmp;}}}
当然缺点就是伪透明看到的背景只是一张图而不是真正的背景当然还有一种方式就是用一个半透明的窗体来作为遮罩上面在用一个窗体来做你的控件publicForm7(){InitializeComponent();this.FormBorderStyle=FormBorderStyle.None;this.Location=Point.Empty;this.Size=Screen.PrimaryScreen.Bounds.Size;this.BackColor=Color.Red;//把红色掏空this.TransparencyKey=this.BackColor;}privatevoidForm7_Load(objectsender,EventArgse){Formfrm=newForm();//遮罩窗体frm.FormBorderStyle=FormBorderStyle.None;frm.Location=Point.Empty;frm.Size=this.Size;frm.Opacity=0.5;//半透明frm.BackColor=Color.Black;frm.Show();this.Owner=frm;//显示在遮罩之上}
效果和上面的一样不过这个是真的透明但是遗憾的是你控件的窗口上不能有rgb为255,0,0的颜色出现不然会被掏空