C#如何定义一个公共画板跟画布,让其他控件可以同时调用
或者有没有大神可以指点一下我,我现在在做一个拼图软件,我想创建一个公共的画布,让其他Picturebox 可以同时调用这个画布,比如2X2的拼图格式,我就把这画布平均分为四个部分,每加入一副图片,就在这公共画布的四分之一区域加入一副图片,如图所示

但是我不会知道如何定义一个公共的画布 目前只能在一个单独的事件里单独的创建一个画板,我添加第二个图片就变成这样,如图所示

这是我的代码:
private void PictureBox1_Click(object sender, EventArgs e)
{
OpenFileDialog file = new OpenFileDialog();
file.InitialDirectory = ".";
file.Filter = "图片格式(*.jpg)|*.jpg|(*.bmp)|*.bmp|(*.png)|*.png";
file.ShowDialog();
if (file.FileName != string.Empty)
{
try
{
pathname1 = file.FileName; //获得文件的绝对路径
this.PictureBox1.Load(pathname1);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
SaveFileDialog save = new SaveFileDialog();
}
string str1 = pathname1;
str1.Replace(@"\","/");
Image img1 = Image.FromFile(""+str1+"");
Bitmap map1 = new Bitmap(img1);
var width = img1.Width;
var height = img1.Height; ;
// 初始化画布(最终的拼图画布)并设置宽高
Bitmap bitMap = new Bitmap(width*2, height*2);
// 初始化画板
Graphics g1 = Graphics.FromImage(bitMap);
// 将画布涂为白色(底部颜色可自行设置)
g1.FillRectangle(Brushes.White, new Rectangle(0, 0, width, height));
//在x=0,y=0处画上图一
g1.DrawImage(map1, 0, 0, img1.Width, img1.Height);
//在x=0,y在图一往下10像素处画上图二
map1.Dispose();
// map2.Dispose();
Image img = bitMap;
pictureBox3.Image = img;
textBox1.Text = pathname1;
}
private void PictureBox2_Click(object sender, EventArgs e)
{
OpenFileDialog file = new OpenFileDialog();
file.InitialDirectory = ".";
file.Filter = "图片格式(*.jpg)|*.jpg|(*.bmp)|*.bmp|(*.png)|*.png";
file.ShowDialog();
if (file.FileName != string.Empty)
{
try
{
pathname2 = file.FileName; //获得文件的绝对路径
this.pictureBox2.Load(pathname2);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
SaveFileDialog save = new SaveFileDialog();
string str2 = pathname2;
str2.Replace(@"\", "/");
Image img2 = Image.FromFile("" + str2 + "");
Bitmap map2 = new Bitmap(img2);
var width = img2.Width;
var height = img2.Height; ;
Bitmap bitMap = new Bitmap(width * 2, height * 2);
// 初始化画板
Graphics g1 = Graphics.FromImage(bitMap);
g1.DrawImage(map2, 0,height, img2.Width, img2.Height);
map2.Dispose();
Image img = bitMap;
pictureBox3.Image = img;
}
}
麻烦各位指点一下

但是我不会知道如何定义一个公共的画布 目前只能在一个单独的事件里单独的创建一个画板,我添加第二个图片就变成这样,如图所示

这是我的代码:
private void PictureBox1_Click(object sender, EventArgs e)
{
OpenFileDialog file = new OpenFileDialog();
file.InitialDirectory = ".";
file.Filter = "图片格式(*.jpg)|*.jpg|(*.bmp)|*.bmp|(*.png)|*.png";
file.ShowDialog();
if (file.FileName != string.Empty)
{
try
{
pathname1 = file.FileName; //获得文件的绝对路径
this.PictureBox1.Load(pathname1);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
SaveFileDialog save = new SaveFileDialog();
}
string str1 = pathname1;
str1.Replace(@"\","/");
Image img1 = Image.FromFile(""+str1+"");
Bitmap map1 = new Bitmap(img1);
var width = img1.Width;
var height = img1.Height; ;
// 初始化画布(最终的拼图画布)并设置宽高
Bitmap bitMap = new Bitmap(width*2, height*2);
// 初始化画板
Graphics g1 = Graphics.FromImage(bitMap);
// 将画布涂为白色(底部颜色可自行设置)
g1.FillRectangle(Brushes.White, new Rectangle(0, 0, width, height));
//在x=0,y=0处画上图一
g1.DrawImage(map1, 0, 0, img1.Width, img1.Height);
//在x=0,y在图一往下10像素处画上图二
map1.Dispose();
// map2.Dispose();
Image img = bitMap;
pictureBox3.Image = img;
textBox1.Text = pathname1;
}
private void PictureBox2_Click(object sender, EventArgs e)
{
OpenFileDialog file = new OpenFileDialog();
file.InitialDirectory = ".";
file.Filter = "图片格式(*.jpg)|*.jpg|(*.bmp)|*.bmp|(*.png)|*.png";
file.ShowDialog();
if (file.FileName != string.Empty)
{
try
{
pathname2 = file.FileName; //获得文件的绝对路径
this.pictureBox2.Load(pathname2);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
SaveFileDialog save = new SaveFileDialog();
string str2 = pathname2;
str2.Replace(@"\", "/");
Image img2 = Image.FromFile("" + str2 + "");
Bitmap map2 = new Bitmap(img2);
var width = img2.Width;
var height = img2.Height; ;
Bitmap bitMap = new Bitmap(width * 2, height * 2);
// 初始化画板
Graphics g1 = Graphics.FromImage(bitMap);
g1.DrawImage(map2, 0,height, img2.Width, img2.Height);
map2.Dispose();
Image img = bitMap;
pictureBox3.Image = img;
}
}
麻烦各位指点一下
...全文
相关推荐
C#简易画板
这是用C# GDI实现的简易画板Demo,对应博文http://blog.csdn.net/luols/article/details/7171668,有需要的朋友可以下载样例试用
C# winform 画板
对于学习来说是很好的,内容包括直线、矩形、正方形、圆、椭圆,为了共同学习
用C# 制作的一个小画板
这是一个用C#编制的画板,可以改变画板的颜色,可以改变字体的大小,可以改变笔的大小,实现用鼠标在电脑上面写字!!!!!
c#写的画板代码 (基本功梦都已实现)
用C#写的画板,基本功梦都已实现 。请指教
为C#自定义控件添加自定义事件
这里的自定义控件是由普通控件组合而成的。 希望事件响应代码推迟到使用自定义控件的窗体里写。 步骤一:新建一个用户控件,放两个按钮,Tag分别是btn1,btn2. 这两个按钮的共用单击事件处理代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Form


