我现在正在做的一个项目正好让我用到了很多关于Picture控件。这也是我第一个涉及到Picture控件的大项目,我从中也得到了很大的乐趣!
        因此,在本周的Nugget中,我会写一些我从中总结出的一些技巧和经验,希望对那些想用好Picture控件的各位有所帮助:

        首先,我发现,如果你不选择Picture控件右键菜单中的“Erase First”,那么整个图片会更新得更快。如果你需要在图片上改变什么,我会试图只是重画图片中必要的部分,而保留其余地方不变。因此,如果你是要处理一个很大的图片的话,那么你需要不选择Erase First这个选项。
        如果你需要重新绘制整个图片,你可以先擦除所有内容(否则新的画就会覆盖在老的画中)。你可以简单地使用Picture控件的Erase First属性,将“1”连于此,这样你就可以擦除内容一次,而不需要去改变真正的“Erase First”设定项。
·
       在我的项目中,我在Picture 控件中使用了很多拖拽的效果。有一个很聪明的方法是,当你点击与拖拽Picture控件中的对象时,我会利用“move”的这个行为,让它看上去真的像随 着鼠标光标移动,直到我放下这个对象。有两种方式可以解决这个问题……其中一种是在你移动对象时,主Picture控件中重新绘制图片。当然,第二种方法 看上去会运行得快得多……其实你可以有第二个Picture控件,是一个透明的Picture控件(边框也是透明)。然后在这个程序中,你可以在这个控件 中画需要移动的图案。然后,你根据鼠标的位置改变该控件的位置。这样也能达到同样的效果,结果显示这种方式比第一种方式要快得多,并且也很酷。
·
        在Picture Function函数板上有着许多函数和VI用来在一个Picture控件上绘制对象,比如Draw Point、Draw Line、Draw Rect等。我倒不经常用这些VI,作为替代,我会使用像Microsoft Paint这样的软件来画我会在Picture控件上用的物体的位图。在很多场合,我会使用Read from BMP File这个VI 来读取位图到LabVIEW,然后我会使用Unflatten Pixmap VI将它转换为2维数组。此时,我有一个2D数组常量,然后我可以通过使用Draw Unflattened Pixmap这个VI使用在我的程序框图中。这样,不需要画一堆复杂的绘画VI,我就有了一个2D数组常量,只有当我的对象图片出现变化时候才需要更新。
·
        上面这个规则的一个例外就是我会使用Get Text Rect和Draw Text in Rect这两个VI。该VI会让在Picture控件中添加文本以及定义图片中有文字的区域变得很容易,从而允许我做一些很Cool的事情,比如当这些文 字被点击,我可以显示一个之前隐藏的组合框,从而允许用户能够在我的Picture控件中编辑文本。
 
        好了,真的有点像意识流的写法,但我真诚希望这些要点将是各位希望通过使用Picture控件来实现很美观的LabVIEW界面的开发者们。在我开始这个项目之前,有人曾经告诉过我,你可以通过Picture控件在LabVIEW下做出任何酷的界面,我现在觉得他们说的挺对的。