Png图片的透明部分穿透测试

原文:Png图片的透明部分穿透测试


       private void Window_MouseMove(object sender, MouseEventArgs e){           NavBtnList.Clear();
                Point mouseP = e.GetPosition(this);
                VisualTreeHelper.HitTest(this, new HitTestFilterCallback(HitFilter),
                    new HitTestResultCallback(HitResult), new PointHitTestParameters(mouseP));

                if (NavBtnList.Count > 0)
                {
                    for (int k = 0; k < NavBtnList.Count; k++)
                    {
                        IconBtn element = NavBtnList[k] as IconBtn;

                        DrawingVisual drawingVisual = new DrawingVisual();
                        using (DrawingContext context = drawingVisual.RenderOpen())
                        {
                            VisualBrush brush = new VisualBrush(element) { Stretch = Stretch.None };
                            context.DrawRectangle(brush, null,
                                new Rect(0, 0, element.ActualWidth, element.ActualHeight));
                            context.Close();
                        }

                        //dpi可以自己设定
                        // 获取dpi方法:PresentationSource.FromVisual(this).CompositionTarget.TransformToDevice
                        RenderTargetBitmap bitmap = new RenderTargetBitmap((int)element.ActualWidth,
                            (int)element.ActualHeight, 96, 96, PixelFormats.Pbgra32);
                        bitmap.Render(drawingVisual);

                        Point p = this.TranslatePoint(mouseP, element); //全局坐标转为局部坐标point

                        //获取鼠标下像素颜色值
                        var c = getImagePointColor((bitmap as BitmapSource), (int)p.X, (int)p.Y);
                        if (c != Convert16ToColor("#00000000"))
                        {
                            if (element.IsEnabled)
                            {
                            }
                            break;

                        }
                        bitmap.Clear();
                    }}
 1         //鼠标按下获得所有IconBtnFrame 存储在NavBtnList里
 2         List<IconBtn> NavBtnList = new List<IconBtn>();
 3
 4         public HitTestFilterBehavior HitFilter(DependencyObject dObject)
 5         {
 6             if (dObject is IconBtn)
 7             {
 8                 NavBtnList.Add(dObject as IconBtn);
 9             }
10             return HitTestFilterBehavior.Continue;
11         }
12
13         public HitTestResultBehavior HitResult(HitTestResult result)
14         {
15             return HitTestResultBehavior.Continue;
16         }

原文地址:https://www.cnblogs.com/lonelyxmas/p/9688777.html

时间: 2024-10-08 10:31:32

Png图片的透明部分穿透测试的相关文章

ie6下:png图片不透明 和 背景图片为png的节点的内部标签单击事件不响应

1.png图片不透明 少量图片时:使用滤镜: _background:none; _filter:prodig:DXImageTransform.Microsoft.AlphaImageLoader(src="../a.png"); 注意: 测试发现如果把样式写在css文件里,而非当前页面的<style></style>里,则不会生效. 图片多时:使用js插件,可参考ie6里png图片不透明 2.背景图片为png的节点的内部标签单击事件不响应 参考张鑫旭的Jav

CAGradientLayer实现图片渐变透明效果

CAGradientLayer实现图片渐变透明效果 要实现的效果如下: 源码: // // RootViewController.m // CAGradientLayer // // Copyright (c) 2014年 Y.X. All rights reserved. // #import "RootViewController.h" #import "YXGCD.h" @interface RootViewController () @property (n

如何利用CSS实现图片的透明效果

如何利用CSS实现图片的透明效果:建议:尽可能的手写代码,可以有效的提高学习效率和深度.在网页的实际应用中,往往需要设置图片的透明度,下面就简单介绍一下如何实现此效果.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/"

IE6png图片不透明,等问题处理

为了在浏览器中显示更好的处理效果,一般会设置 html 元信息(meta)的http-equiv <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1.0"/> 这句代码指示浏览器按照当前最新版本显示 但这与解决IE6 png图片不透明不搭干,而只是做到了避免使用低版本浏览器,某些时候IE6可能是有些pc上的最高版本,所以说治病需要治本. 下面使用浏览器版本判断机制,在IE版本等于6的浏

Windows界面编程-背景图片、透明特效使用

Windows界面编程第一篇 位图背景与位图画刷 可以通过WM_CTLCOLORDLG消息来设置对话框的背景,MSDN上对这个消息的说明如下: The WM_CTLCOLORDLG message is sent to a dialog box before the system draws the dialog box. By responding to this message, the dialog box can set its text and background colors us

IE6支持PNG24图片背景透明

网上关于IE6支持PNG24图片背景透明的方法有数种,以下只列出其中两种个人认为比较实用的方法. 第一种:使用IE自身滤镜background:url(a.png) repeat-x 0 0; _background:none; _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="a.png" ,sizingMethod="crop"); 原理:其他浏览器调用PNG,IE6则先设背景没有(必

【转】cocos2d-x游戏开发(十四)用shader使图片背景透明

转自:http://blog.csdn.net/dawn_moon/article/details/8631783 好吧,终于抽时间写这篇文章了. 手头上有很多人物行走图,技能特效图等,但这些图都有个纯黑色背景,怎么样将内容显示出来,让背景透明呢?前段时间搞了一下,感谢群里的童鞋们,提供了思路和方法. 这里用shader处理了像素,使黑色背景透明,直接上代码 ShaderSprite.h 1 #ifndef __TestShader__ShaderSprite__ 2 #define __Tes

CSS实现背景透明而背景上的文字图片不透明

1.用图片则能兼容IE8和IE7 2.用颜色则不能兼容IE8和IE7,并且颜色层不能随着内容层自增长,只能设置一个固定高度 3.用颜色则颜色层不能包含内容层(图片和文字) 1 <!-- wrap最外层设置position:relative --> 2 <div class="wrap"> 3 <!-- bg为背景透明层 --> 4 <div class="bg"></div> 5 <!-- conte

Windows操作 - Photoshop为图片添加透明立体水印

原文地址:http://design.yesky.com/photoshop/252/2427752.shtml 本文我们介绍用Photoshop为图片添加透明立体水印的方法和技巧. 原图: 打开原图新建立一个图层,并且输入文字,如图所示: 设置图层样式: 设置填充: 拼合图层: