就这种效果 功能就是PS的描边功能
图片为PNG格式已知背景是透明的
图片为PNG格式已知背景是透明的
解决方案 »
- ArrayList问题
- (求教)关于如何更改键盘实际发送值的问题
- 如何在datagridview表格控件中添加某一列的事件
- 急...怎么写项目需求分析???
- 通过GPRS MODEM发彩信的问题
- 请问作winform时候,怎么做工具栏
- 求救!!安装部署项目时,在用户界面里添加“两个按钮的对话框”界面,相应的代码在什么方法里添加?install、commit还是其他的方法?
- 数据由类型化DataSet更新到数据库时出错,含有约束关系。
- [WinForm]在一个界面把值用一个数组保存然后存到一个实体类中.
- 我太菜了:怎样将byte[]转换成string呀?
- 如何屏蔽鼠标的双击事件
- 如何使电脑重启后,消息队列中的消息还在?
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;namespace WindowsApplication182
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); PictureBox PB = new PictureBox();
PB.Parent = this;
PB.Dock = DockStyle.Fill;
PB.Load(@"c:\pic.png"); Bitmap Bmp = new Bitmap(PB.Image);
GraphicsPath GP = new GraphicsPath();
Color C = Color.FromArgb(0, 0, 0, 0); for (int i = 0; i < Bmp.Width; i++)
for (int j = 0; j < Bmp.Height; j++)
// 这点不透明而且左右上下四点至少有一点是透明的,那这点就是边缘
if (Bmp.GetPixel(i, j) != C
&& (i > 0 && Bmp.GetPixel(i - 1, j) == C
|| i < Bmp.Width - 1 && Bmp.GetPixel(i + 1, j) == C
|| j > 0 && Bmp.GetPixel(i, j - 1) == C
|| j < Bmp.Height - 1 && Bmp.GetPixel(i, j + 1) == C))
GP.AddRectangle(new Rectangle(new Point(i, j), new Size(1, 1))); using (Graphics G = Graphics.FromImage(Bmp))
G.DrawPath(Pens.Black, GP); PB.Image = Bmp;
}
}
}