blendfunction

时间:2025-12-19 09:45:46编辑:莆田seo君

关于您上次回答的“[C#] GDI+能实现PNG格式背景图片的透明”

1.IntPtr代表指针变量,是c#的基本类型
2.BLENDFUNCTION是我定义的结构体,用于对应UpdateLayeredWindow这个API函数的BLENDFUNCTION类型参数:定义如下,UpdateLayeredWindow函数下面有说。
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct BLENDFUNCTION
{
public byte BlendOp;
public byte BlendFlags;
public byte SourceConstantAlpha;
public byte AlphaFormat;
}
3.SelectObject是API函数,我这里把它作为常函数定义在Win32API这个类里面,作用是将对象选进DC。我将它的c#引用方法也给你吧,具体怎么在c#里面引用API函数,可以参考MSDN
[DllImport("gdi32.dll", ExactSpelling = true)]
public static extern IntPtr SelectObject(IntPtr hDC, IntPtr hObject);
4.UpdateLayeredWindow也是API函数,定义在Win32API这个类里面,作用是把设置窗口的透明度或透明方式(Alapha还是透明指定颜色),下面是这个函数在c#里面引用的方法。
[DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
public static extern Bool UpdateLayeredWindow(IntPtr hwnd, IntPtr hdcDst, ref Point pptDst, ref Size psize, IntPtr hdcSrc, ref Point pprSrc, Int32 crKey, ref BLENDFUNCTION pblend, Int32 dwFlags);
5.createParams.ExStyle |= Win32API.0x80000这句写错了,
应该是:createParams.ExStyle |= 0x80000;是为了把窗口设为Layer窗口,一定要设置这个,不然窗口无法透明。其实这是API里面的CreateWindowEx函数创建窗口时用的扩展属性,可以参考MSDN。


Vb Image加载透明png

GDI+支持PNG,用GDI+直接可以打开PNG透明图像:

dim Graphics as long,IMG as long

InitGDIPlus
GdipCreateFromHDC Picture1.hDC, Graphics

GdipLoadImageFromFile StrPtr("c:\1.png"), Img
GdipDrawImage Graphics, Img, 0, 0
Picture1.Refresh

GdipDeleteGraphics Graphics
TerminateGDIPlus


'-----------------------------------------------------------------------
自己下载GDI+的声明模块,网上很多


vb添加透明图片,即可以看到背景的图片

首先你要明白的是 不规则图片是把一种或几种颜色透明了的结果,不规则图片也是一个矩形的图片,只是不显示了外围的颜色
其次是 游戏中的绘图一般都使用了 directdraw绘图的,如果设计到图像的选装则使用direct3D,因为3d旋转比2D矩阵算法来的容易
在创建directdraw对象后 可以调用 setcolerkey 设置色彩键,
在VB 中如果你不追求速度可以用gdiplus绘图 就是 GDI+,直接把图片透明的绘制在picture上,它会自动识别透明色
这个简单
首先用:
GdiplusStartup 设置GDI+
然后
GdipCreateFromHDC 绑定到绘制的图片
GdipLoadImageFromFile 加载带透明信息的图片比如 gif ,ICO,png 等格式的
GdipGetImageWidth
GdipGetImageHeight 获得图片的大小
GdipDrawImageRect 绘制图片
GdipDisposeImage 处理图像
GdipDeleteGraphics 删除
GdiplusShutdown 关闭 和卸载
至于API 的声明 和 对象的创建代码有点多,在说网上有的是我就不写的


java怎么给窗体边框四周添加阴影和半透明

java swing是提供了设置阴影和透明度的方法的,示例如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import com.sun.awt.AWTUtilities;

导入 AWTUtilities可能会提示:访问限制:由于对必需的库 C:\Program Files\Java\jre6\lib\rt.jar 具有一定限制,因此无法访问类型 AWTUtilities,请到eclipse进行设置:窗口》首选项》java》编译器》错误警告 选择 代码样式》访问外层不可访问成员》 把错误修改成功 警告


public class Ceshi extends JFrame
{
public Ceshi()
{
JLabel label=new JLabel("这是一个标签!");
label.setOpaque(false);
label.setHorizontalAlignment(JLabel.CENTER);
add(label);

setSize(600,400);

setLocationRelativeTo(null);

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

//Opacity最大值为1.0f,也就是什么也不透明,取值不能大于1.0f
AWTUtilities.setWindowOpacity(this,0.5f);
setVisible(true);

}
public static void main(String[] args)
{
new Ceshi();
}

}


上一篇:常熟旅行社

下一篇:没有了