窗体特技效果

在VB编程中,应用程序窗体的出现和关闭一般都是静态的,不过,我们利用下面的一个API函数Animate Window就可以轻松实现窗体的动态效果。

API函数Animate Window的声明如下:

Private Declare Function AnimateWindow Lib "user32"(ByVal hwnd As Long, ByVal dwTime As Long, ByVal dwFlags As Long) As Long

其中:hwnd只对form有效;dwtime是动画持续的时间,默认值为200;dwflags是动画方式,可以取&H1、&H2、&H3、&H4、&H5、&H6、&H8、&H9、和&H10共8个值,分别代表左右、右左、上下、左上到右下、右上到左下、下上、左下到右上以及中间到四周等。

AW_HIDE=&H10000 在窗体卸载时若想使用本函数就得加上此常量。

AW_ACTIVATE=&H20000在窗体通过本函数打开后,默认情况下会失去焦点,除非加上本常量

AW_SLIDE=&H40000    窗体移动滑出滑入

AW_BLEND=&H80000 淡入淡出效果(适用于WIN2000)

例:从左上角到右下角逐渐显示窗体

Private Sub Form_Load()

AnimateWindow hwnd, 3000,&H5 Forml.Refresh

End Sub


以上程序在PWIN98,VB6.0中文企业版中运行通过。

dwFlags的值可以用OR组合使用,效果更佳

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现毛玻璃效果,可以通过以下步骤来完成: 1. 在窗体上添加一个Panel控件,并将其Dock属性设置为Fill,以充满整个窗体。 2. 在Panel控件中添加一个PictureBox控件,并将其Dock属性设置为Fill,以充满整个Panel控件。 3. 在PictureBox控件中加载需要进行毛玻璃效果的图片。 4. 在窗体的Load事件中添加以下代码: ``` private void Form1_Load(object sender, EventArgs e) { Bitmap bmp = new Bitmap(pictureBox1.Image); ImageFilter filter = new GaussianBlurFilter(10); pictureBox1.Image = filter.ProcessImage(bmp); } ``` 5. 在程序中添加以下类: ``` public abstract class ImageFilter { public abstract Bitmap ProcessImage(Bitmap image); } public class GaussianBlurFilter : ImageFilter { private int radius; public GaussianBlurFilter(int radius) { this.radius = radius; } public override Bitmap ProcessImage(Bitmap image) { Bitmap blurred = new Bitmap(image.Width, image.Height); using (Graphics graphics = Graphics.FromImage(blurred)) { graphics.SmoothingMode = SmoothingMode.AntiAlias; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; Rectangle rectangle = new Rectangle(0, 0, image.Width, image.Height); ImageAttributes attributes = new ImageAttributes(); attributes.SetWrapMode(WrapMode.TileFlipXY); int[] weights = CalculateWeights(radius); for (int y = -radius; y <= radius; y++) { for (int x = -radius; x <= radius; x++) { int index = (y + radius) * (2 * radius + 1) + x + radius; float weight = (float)weights[index] / 256f; ColorMatrix matrix = new ColorMatrix(new float[][] { new float[] { weight, 0, 0, 0, 0 }, new float[] { 0, weight, 0, 0, 0 }, new float[] { 0, 0, weight, 0, 0 }, new float[] { 0, 0, 0, 1, 0 }, new float[] { 0, 0, 0, 0, 1 } }); attributes.SetColorMatrix(matrix); graphics.DrawImage(image, rectangle, x, y, image.Width, image.Height, GraphicsUnit.Pixel, attributes); } } } return blurred; } private int[] CalculateWeights(int radius) { int[] weights = new int[radius * 2 + 1]; double sigma = radius / 3.0; double twoSigmaSquare = 2.0 * sigma * sigma; double root = Math.Sqrt(twoSigmaSquare * Math.PI); int total = 0; for (int i = -radius; i <= radius; i++) { double distance = i * i; int index = i + radius; weights[index] = (int)((Math.Exp(-distance / twoSigmaSquare) / root) * 256); total += weights[index]; } for (int i = 0; i < weights.Length; i++) { weights[i] = (weights[i] * 256) / total; } return weights; } } ``` 这些代码将创建一个抽象类ImageFilter,以及一个继承自它的GaussianBlurFilter类。GaussianBlurFilter类将实现高斯模糊算法,从而实现毛玻璃效果。 这些代码将在窗体加载时调用GaussianBlurFilter类,并将其处理后的图像作为PictureBox控件的图像显示出来,从而实现毛玻璃效果

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值