作者proach ( )
看板C_Sharp
标题Re: [问题] 大量按钮的配置
时间Tue Dec 31 13:15:14 2013
※ 引述《KanoLoa (卡)》之铭言:
: 各位版友好,我在设计虚拟的触碰键盘时遇到了疑问,故来求教版上的大家开解。
: 若今天已经有一个键盘的图片,要实作出每一个对应的键,
: 大家会想用什麽样的设计方法去实做呢。
: 1.以完整键盘图当作底图,在每一个键上个别拉一个panel或picturebox等元件盖上,
: 设定元件为透明色,好处是可以直接产生滑鼠点击属性事件,大小位置也方便设定。
: 缺点是大量透明的元件会导致绘图不顺,容易发生键盘区块闪烁的状况。
: 2.将键盘图乖乖拆开分割,每一个键都将图片组合做好一个按钮元件,个别设定事件。
: 好处是耦合低,绘图效能可,随时可自由编排键盘排列,缺点是前期费工。
: 3.直接放底图,然後在监听滑鼠事件中,重作每个键区域的碰撞侦测对应事件。
: 好处是绘图效能最佳,缺点是要用程式码来设定每一个区块位置与大小,稍嫌繁琐。
: 之前写winform软体很要求产出速度,所以常常用 1.的方法硬干,
: 各种panel和picturebox用透明背景叠来叠去,当元件多的一个数量之後,
: 只要出现大量元件的切换出现,就会开始看到元件各种闪闪,
: 然後都跟客户说这是一种科技特效,客户心里都赞好,做这麽快还加做特效。(...误)
: 好不容易最近开始脱离大量产出,可以开发一些品质比较要求质感的产品,
: 正考虑是不是转用WPF,自己查资料似乎比较适合做更精致的互动效果。
: 以上疑问还恳请大家帮忙提供建议,感谢感谢。 m(_ _)m
考虑到要编辑很多按键的位置,对我来说IDE的介面是最棒的,但会遇到 (1)的问题。
用programmatic方式的话,(3)很棒,但是定位会很辛苦。
我刚想也许可以这样做,用 (1)的方式,在开发阶段定位一堆 buttons,
程式载入後,code将这些 buttons从 form.Controls内移除,抄下位置大小等资讯,
用於建立新的 List<Rectangle>,以後有 MouseDown events
时,将 mouse location丢进去比较就知道按到那边按钮的位置了。
这样做因为是回圈在控制,code应该没几行,效率应该可以接受才是。
程式码最多的部分应该会变成 switch(按到那个区) case 执行哪段程式码的部分。
以上是中午等便当时随便想的,有错请指教,谢谢 m(_ _)m
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.251.209.48
1F:→ KanoLoa:没错,其实3方法通常会搭配元件定位,最後抄位置大小 12/31 13:20