Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共84 条记录, 每页显示 10 条, 页签: [1] [2][3][4][5][6][7][8]
[浏览完整版]

标题:在论 异形窗口透明化窗口

1楼
打错潇洒 发表于:2014/5/8 14:30:00
今天逛技术论坛 看到有一个 神人(比我厉害的我都称之为神人) 贴出一个代码,用C#创建一个异形的窗口。

狐表论坛早就有了有关于异形的窗口创建的案例

案例里面的两种方案 都有缺陷
方案1: e.Form.BaseForm.TransparencyKey = Color.Black
具有清除不干净的缺陷,但是简单好用。
方案2: 
Dim frm As System.Windows.Forms.Form = e.Form.BaseForm
path.AddArc(frm .ClientRectangle, 190, 90)
path.AddLine(frm .Right, frm .Top + 50, frm .Left + 100, frm .Bottom)
path.CloseFigure()
frm.Region = new Region(path)
具有难度高的缺点,使用GDI绘制,容易造成绘制复杂图形,思维与代码混乱。但是绘制的窗体整洁

而我今天要推荐的是集合上述两点优势 简单好用

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看


已经简单的封装了,回复下载就可以用的


以下内容只有回复后才可以浏览









----------下面的代码是求帮忙翻译的-----------




但是这里面也有问题:
以下内容为程序代码:

1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Text;
7 using System.Windows.Forms;
8 using System.Drawing.Drawing2D;
9
10 namespace WindowsFormsApplication1
11 {
12 public partial class Form1 : Form
13 {
14 public Form1()
15 {
16 InitializeComponent();
17 }
18
19 private void Form1_Load(object sender, EventArgs e)
20 {
21 ///<summary>
22 /// 设置不规则窗体
23 ///</summary>
24 ///<param name="sender"></param>
25 ///<param name="e"></param>
26
27 //从指定的位图中获取alpha透明度大于 10 的区域
28 Bitmap img = (Bitmap)pictureBox1.Image;
29 GraphicsPath grapth = GetNoneTransparentRegion(img, 155);
30 this.Region = new Region(grapth);
31
32 //要显示的图片设置为窗体背景
33 this.BackgroundImage = pictureBox1.Image;
34 this.BackgroundImageLayout = ImageLayout.Zoom;
35
36 //在修改窗体尺寸之前设置窗体为无边框样式
37 this.FormBorderStyle = FormBorderStyle.None;
38 this.Width = pictureBox1.Image.Width;
39 this.Height = pictureBox1.Image.Height;
40 }
41 ///<summary>
42 /// 返回指定图片中的非透明区域(方法)
43 ///</summary>
44 ///<param name="img">位图</param>
45 ///<param name="alpha">alpha 小于等于该值的为透明</param>
46 ///<returns></returns>
47 public static GraphicsPath GetNoneTransparentRegion(Bitmap img, byte alpha)
48 {
49 int height = img.Height;
50 int width = img.Width;
51 int xStart, xEnd;
52 GraphicsPath grpPath = new GraphicsPath();
53 for (int y = 0; y < height; y++)
54 {
55 //逐行扫描
56 for (int x = 0; x < width; x++)
57 {
58 //略过连续透明的部分
59 while (x < width && img.GetPixel(x, y).A <= alpha)
60 {
61 x++;
62 }
63 //不透明部分;
64 xStart = x;
65 while (x < width && img.GetPixel(x, y).A > alpha)
66 {
67 x++;
68 }
69 xEnd = x;
70 if (img.GetPixel(x - 1, y).A > alpha)
71 {
72 grpPath.AddRectangle(new Rectangle(xStart, y, xEnd - xStart, 1));
73 }
74 }
75 }
76 return grpPath;
77 }
78 }
79 }
80

GetNoneTransparentRegion 方法中狐表里翻译之后出现的情况是X参数错误,还求高手帮助

[此贴子已经被作者于2014-5-8 14:43:31编辑过]
2楼
ybil 发表于:2014/5/8 14:55:00
樓主喜歡走不尋常路
3楼
blackzhu 发表于:2014/5/8 14:57:00
看看
4楼
lsy 发表于:2014/5/8 15:01:00
哪儿热闹哪有我。
5楼
打错潇洒 发表于:2014/5/8 15:06:00
还是菜鸟 刚刚飞  学习学习,多接触一些 比较有想法的代码算法 有益身心健康图片点击可在新窗口打开查看
6楼
hanxuntx 发表于:2014/5/8 15:08:00

小手一抖,积分拿走

图片点击可在新窗口打开查看

7楼
有点甜 发表于:2014/5/8 15:09:00
 挺好...
8楼
liuruihua 发表于:2014/5/8 15:34:00
用户已锁定!
9楼
jspta 发表于:2014/5/8 15:58:00
学习下
10楼
hws005 发表于:2014/5/8 16:03:00
支持!顶起
共84 条记录, 每页显示 10 条, 页签: [1] [2][3][4][5][6][7][8]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .04883 s, 4 queries.