-
局部透明窗口的实现
2010-09-28 21:15:00经常能看到一些软件弹出局部透明的窗口,看起来很轻很薄,其实实现起来也很简单。 1.窗口全透明,用SetLayeredWindowAttributes设置alpha。 2.窗口局部透明 如果不带子窗口,用UpdateLayeredWindow很容易就能...经常能看到一些软件弹出局部透明的窗口,看起来很轻很薄,其实实现起来也很简单。
1.窗口全透明,用SetLayeredWindowAttributes设置alpha。
2.窗口局部透明
如果不带子窗口,用UpdateLayeredWindow很容易就能实现。
如果有子控件,用UpdateLayeredWindow后子控件的绘制会出问题。有个巧妙的方法可以解决这个问题:假设A窗口是要局部透明的带有子控件的窗口,创建一个popup型的窗口B,以A为父窗口,处于A窗口z轴上面,和A保持移动同步,size同步,显示与隐藏同步。并且hook住A窗口和A窗口子控件的绘制消息。使A窗口透明度接近0,这样,A窗口作为一个正常的窗口存在,但是由于透明了几乎看不见。B窗口使用A窗口的绘制信息,做完Alpha的混合效果后,调用UpdateLayeredWindow完成B的绘制。ok,拥有子控件的窗口A也能实现部分透明了。
这里要注意一下,窗口设置WS_EX_LAYERED属性后,就只能使用SetLayeredWindowAttributes或UpdateLayeredWindow两种刷新机制,要切换到另一种,必须先去掉WS_EX_LAYERED,然后再重新设WS_EX_LAYERED。 -
java图片局部缩放_java图片局部透明
2021-02-28 19:37:17/*** 对图片中的 黑色或白色进行透明化处理** @param sourcePath* 原始图* @param targetPath* 目标图,为null时在原始图同级目录下生成目标图* @param type* B:黑色 W:白色* @return 结果图字节数据组*/public .../**
* 对图片中的 黑色或白色进行透明化处理
*
* @param sourcePath
* 原始图
* @param targetPath
* 目标图,为null时在原始图同级目录下生成目标图
* @param type
* B:黑色 W:白色
* @return 结果图字节数据组
*/
public static byte[] transferAlpha(String sourcePath, String targetPath,
String type) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try {
File iFile = new File(sourcePath);
if (!iFile.exists()) {
return byteArrayOutputStream.toByteArray();
}
ImageIcon imageIcon = new ImageIcon(ImageIO.read(iFile));
BufferedImage bufferedImage = new BufferedImage(imageIcon
.getIconWidth(), imageIcon.getIconHeight(),
BufferedImage.TYPE_4BYTE_ABGR);
Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics();
g2D.drawImage(imageIcon.getImage(), 0, 0, imageIcon
.getImageObserver());
int alpha = 0;
int offset = 20;
boolean isBlack = type.equals("B");
for (int j1 = bufferedImage.getMinY(); j1 < bufferedImage
.getHeight(); j1++) {
for (int j2 = bufferedImage.getMinX(); j2 < bufferedImage
.getWidth(); j2++) {
int rgb = bufferedImage.getRGB(j2, j1);
int r = (rgb & 0xff0000) >> 16;
int g = (rgb & 0xff00) >> 8;
int b = rgb & 0xff;
boolean checkW = ((255 - r) < offset)
&& ((255 - g) < offset) && ((255 - b) < offset);
boolean checkB = (r < offset) && (g < offset) && (b < offset);
if (isBlack ? checkB : checkW) {
rgb = ((alpha + 1) << 24) | (rgb & 0x00ffffff);
}
bufferedImage.setRGB(j2, j1, rgb);
}
}
g2D.drawImage(bufferedImage, 0, 0, imageIcon.getImageObserver());
File targetFile = null;
if (targetPath == null) {
targetFile = new File(sourcePath);
} else {
targetFile = new File(targetPath);
if (!targetFile.exists()) {
File dir = new File(targetFile.getParent());
if (!dir.exists()) {
boolean result = dir.mkdirs();
if (!result) {
log.info("crate file failed.path:" + dir.getPath());
}
}
}
}
ImageIO.write(bufferedImage, "png", targetFile);
} catch (Exception e) {
e.printStackTrace();
}
return byteArrayOutputStream.toByteArray();
}
-
Unity3D研究院之处理摄像机与角色之间被挡时的局部透明效果
2015-11-13 10:58:29Unity3D研究院之处理摄像机与角色之间被挡时的局部透明效果 雨松MOMO 【Unity杂文】 围观3540次 10条评论 编辑日期:2015-05-07 字体:大 中 小 原文: ...原文: http://qiita.com/YosukeM/items/a9d88672a8bf516f78a7
我改了一下他的shader.
- 本文固定链接: http://www.xuanyusong.com/archives/3466
- 转载请注明: 雨松MOMO 2015年05月07日 于 雨松MOMO程序研究院 发表
-
android自定义局部透明遮罩-新手引导说明
2021-02-21 15:40:58大致思路就是自定义一个View,然后设置一个遮罩背景,再绘制一个圆圈用于透明显示下面的内容,如果想要说明文字啥的,就再绘制,空白画布,想干嘛干嘛啦。有个重点就是画笔画出来的圆圈要透明显示下面的内容,而不是...概述
大致思路就是自定义一个View,然后设置一个遮罩背景,再绘制一个圆圈用于透明显示下面的内容,如果想要说明文字啥的,就再绘制,空白画布,想干嘛干嘛啦。
画笔
有个重点就是画笔画出来的圆圈要透明显示下面的内容,而不是背景色,这个要借助PorterDuffXfermode来实现。
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); PorterDuffXfermode porterDuffXfermode = new PorterDuffXfermode(PorterDuff.Mode.CLEAR); mPaint.setXfermode(porterDuffXfermode); mPaint.setAntiAlias(true);
控制透明圆的位置
写个方法来改变所绘制的圆圈的位置
public void setCircleLocation(int x, int y, int radius) { this.mX = x; this.mY = y; this.mRadius = radius; invalidate(); }
完整代码
public class MyShadeView extends FrameLayout { private Paint mPaint; private int mX, mY, mRadius; public MyShadeView(@NonNull Context context) { super(context); init(); } public MyShadeView(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } public MyShadeView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { setBackgroundColor(Color.parseColor("#EF000000")); mX = 150; mY = 100; mRadius = 80; mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); PorterDuffXfermode porterDuffXfermode = new PorterDuffXfermode(PorterDuff.Mode.CLEAR); mPaint.setXfermode(porterDuffXfermode); mPaint.setAntiAlias(true); } public void setCircleLocation(int x, int y, int radius) { this.mX = x; this.mY = y; this.mRadius = radius; invalidate(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(mX, mY, mRadius, mPaint); } }
引用加载布局
当成一个控件view来用就行了,我这里是当作悬浮窗的布局来直接new一个实例出来的
MyShadeView mView = new MyShadeView(FloatShadeService.this); mView.setCircleLocation(200, 300, 100);
作为悬浮窗遮罩还要考虑移动透明圆的位置和不影响遮罩下点击操作等,以后有机会再写啦。
更多玩法自己还可再发挥…… -
实现整体不透明而局部透明的效果(附例子)
2010-09-30 12:17:00原文链接:再论窗口透明:实现整体不透明而局部透明的效果(附例子) 在前面的帖子里, 笔者给出了一个制作整体透明而控件不透明的Qt实例。 刚好昨天在qtcn论坛里看到有人问到怎么实现主体不透明而控件... -
改变图片局部透明度,实现透明度根据位置不而渐变
2018-03-15 20:06:001、构成一张图片的是ARGB,我们可以直接把这整张图片的ARGB取出来,然后改变图片的A,也就是透明度。 Bitmap sourceImg; int[] argb = new int[sourceImg.getWidth() * sourceImg.getHeight()... -
摄像机与对象之间被挡时的局部透明效果
2019-01-09 16:29:32Shader "Unlit/PlayerDiffuse" { Properties{ _NotVisibleColor("NotVisibleColor (RGB)", Color) = (0.3,0.3,0.3,1) _MainTex("Base (RGB)", 2D) = "...Geometry+. -
(转载)Unity3D研究院之处理摄像机与角色之间被挡时的局部透明效果
2016-05-19 17:09:12转载http://www.xuanyusong.com/archives/3466 原文: http://qiita.com/YosukeM/items/a9d88672a8bf516f78a7 我改了一下他的shader. 1 2 3 4 -
QT实现窗体的局部区域透明
2021-02-22 14:53:431、主要思路先实现窗体的整体透明,再使用 QPainter::CompositionMode_Clear属性实现窗体的局部透明。 2、 this->setAttribute(Qt::WA_TranslucentBackground); this->setWindowFlags(Qt::... -
VC 实现局部有洞的透明窗口.rar
2019-07-10 18:46:17VC 实现局部有洞的透明窗口,这个窗体的两边是有实体显示的,但中间似乎被掏宝了,似乎这个区域是没有窗体的,能看到本窗口下层窗口的内容,实际上是处理成完全透明的状态了,实现了对VC 窗口局部透明的控制,是不是... -
Android 局部毛玻璃透明效果
2017-07-07 09:46:35Eclipse 工程Demo,用一个BlurringView自定义控件作为毛玻璃蒙板,对后面的背景进行局部模糊。 -
把android中图片局部区域改为透明
2017-12-21 18:40:53import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix;... -
纯色背景透明化工具源代码
2020-11-04 08:42:40纯色背景透明化工具, 拖拽打开图片源文件。提供取色颜色全局/局部矩形替换,取色全局/局部透明化(保存PNG格式)。支持颜色容差调节。 源代码 -
把android 中图片局部区域改为透明
2015-06-29 15:35:40import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; -
【安卓】图片浏览器,可以查看局部细节和改变透明度
2015-02-13 12:47:54改变图片的透明度,可以通过ImageView的setApha方法来实现。...查看图片和改变图片的透明度,需要定义两个ImageView,一个用于查看图片整体,一个用于查看图片局部细节。 效果如下: 界面布局代码: xmlns -
Qt设置窗口透明,置顶
2019-06-29 04:22:49设置窗口透明度,子控件也会透明 设置窗口完全透明,子...局部透明,未编辑,自行百度 一、设置窗口透明度,子控件也会透明 setWindowOpacity(1);设置窗口透明度,1不透明,0透明。子控件也会透明 使用 paintE... -
UpdateLayeredWindow实现自定义透明窗口
2015-06-20 17:48:27UpdateLayeredWindow你是不是很想要一个很漂亮的半透明或是局部透明的窗口呢,那就仔细看看源代码吧。 关于updatelayeredwindow的中文介绍,看完还是像我一样半知不解的就直接看源代码吧。函数可以实现的功能:实现... -
gif透明色相关
2017-02-14 13:12:15众所周知,GIF文件的像素...那么有很多GIF支持局部透明是怎么实现的呢?我们在程序中应该怎么处理来获得像素的透明信息呢? 其实,在我们解析完GIF后,发现每一帧数据里包含一个背景色的字段,这个背景色也是使用... -
大屏地图背景透明效果,高德地图怎么才能只渲染局部地图,有全部代码详细。
2021-02-23 10:56:07描述:这里我只显示中国地图,地图的背景是透明色,这样就可以根据的你的父级元素背景,或者图片显示。 1.https://lbs.amap.com/ 退出之后,发布,选择使用与分享 2.接下来代码。我先说几个关键点,然后贴全部... -
setcaptureproperty设置效果没有_CAD插入的图片,怎么设置透明度?
2020-12-05 09:50:04研究了下,分为两种情况来介绍如何设置图片透明度,分别为“整体透明度”设置与“局部透明度”设置。1、整体透明度设置图片整体透明度调节,可以使用图层里的“透明度”参数来调节。数值在0-90之间,数值越大,图片... -
php处理透明png图片
2014-07-01 09:16:31写了一个处理图片缩放的程序,发现png图片缩放后和原来的差别很大原有图片上一块 渐变 和 局部透明 被弄掉了。找 了好久才发现原来是alpha通道的问题。现在这段程序可以做到png的原样输出$im = imagecreatefrompng('... -
ps制作透明图片
2010-09-06 22:05:00在制作网页的时候,引用了不少的图片,难免都会遇到图片不透明导致页面...也就是gif或者png格式,这样来,当用图片的z-index属性的时候,便可以实现局部透明的效果。 转载于:https://www.cnblogs.com/rixinren/arch...