本人想设置控件不透明的效果,例如
但是假如winform透明了,图片也就透明了
能不能winform透明,但是图片不透明
图片是个picturebox控件
但是假如winform透明了,图片也就透明了
能不能winform透明,但是图片不透明
图片是个picturebox控件
解决方案
10
先上图(本该是上动画的,但是截不下来)
再上码
再上码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing.Imaging; namespace 半透 { public partial class Form1 : Form { public Form1() { InitializeComponent(); TransparencyKey = BackColor; DoubleBuffered = true; } protected override void OnLoad(EventArgs e) { RegionCopy(); } protected override void OnPaint(PaintEventArgs e) { RegionCopy(); } private void Form1_Move(object sender, EventArgs e) { RegionCopy(); } void RegionCopy() { Image objImage = new Bitmap(Width, Height); Graphics gd = Graphics.FromImage(objImage); var r = ClientRectangle; Point f = this.PointToScreen(new Point(0, 0)); gd.CopyFromScreen(f, new Point(0, 0), new Size(r.Width, r.Height)); IntPtr dc1 = gd.GetHdc(); gd.ReleaseHdc(dc1); float k = 0.3f; float[][] nArray = { new float[] {k, 0, 0, 0, 0}, new float[] {0, k, 0, 0, 0}, new float[] {0, 0, k, 0, 0}, new float[] {0, 0, 0, k, 0}, new float[] {0, 0, 0, 0, k} }; ColorMatrix matrix = new ColorMatrix(nArray); ImageAttributes attributes = new ImageAttributes(); attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); gd.DrawImage(objImage, new Rectangle(0, 0, this.Width, this.Height), 0, 0, objImage.Width, objImage.Height, GraphicsUnit.Pixel, attributes); BackgroundImage = objImage; } } }
30
第一个问题 就算本人窗体不是 TopMost 那么本人窗体在浏览器上 浏览器上面窗体背后正好是一张GIF动态图呢?。
就像这样。
还有这不是在埋本人 而是有问题就得面对 而不是逃避问题的说“你非要置顶什么之类的”“本人给本人埋坑什么的”
既然本人都放出本人截图了 那就说明 本人已经运行过代码了 才说话的 而且在本人机器上就算是move也没有刷新图像 但是move事件肯定是被触发了的
就像本人上面说的 本人窗体往右边移动了20个像素 那么窗体被移动到一个新的区域上面触发move事件 问一下你窗体上显示的是新的区域的图像吗?所以说 你的代码 在本人电脑上 无论本人怎么移动都是初始图像 原因是移动到新的区域上面 然后触发move事件 截取到的都是本人本身的图像 而本身则又是上一次move的图像 除非最小化再最大化之类的 才会截取到新的图像
还有一点 提出质疑搞的来好像本人是故意在拆你台一样 不显得很幼稚吗?