WEB开发网
开发学院软件开发C语言 C#开发WPF/Silverlight动画及游戏系列教程(Game C... 阅读

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十五)完美捕捉精灵之神器 -- HitTest

 2010-09-30 20:48:15 来源:WEB开发网   
核心提示: /// <summary> /// 获取图片源某点颜色 /// </summary> public static Color getImagePointColor(BitmapSource bitmapsource, int x, int y) { CroppedBit

        /// <summary>

        /// 获取图片源某点颜色

        /// </summary>

        public static Color getImagePointColor(BitmapSource bitmapsource, int x, int y) {

            CroppedBitmap crop = new CroppedBitmap(bitmapsource as BitmapSource, new Int32Rect(x, y, 1, 1));

            byte[] pixels = new byte[4];

            try {

                crop.CopyPixels(pixels, 4, 0);

                crop = null;

            } catch (Exception ee) {

                MessageBox.Show(ee.ToString());

            }

            //蓝pixels[0] 绿pixels[1]  红pixels[2] 透明度pixels[3]

            return Color.FromArgb(pixels[3], pixels[2], pixels[1], pixels[0]);

        }

此方法的优点是精确,可以定位到精灵有效实体的任一像素角落;而缺点是只能在WPF中使用且性能不好,更麻烦的是必须将之放 Try{}Catch{}块内使用,否则极易出错,因为精灵的图片切换太快了。

解决此问题的另一方式为通过定义精灵实体区域参数public double[] EfficaciousSection来实现,此方法也是我推荐使用的方法,兼顾WPF/Silverlight。

C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(二十五)完美捕捉精灵之神器 -- HitTest

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:开发 WPF Silverlight

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接