Этот вопрос уже набил мне оскомину, но
Как я понимаю, тут необходимо реализовать метод image с параметрами string filename или я чего-то не допонимаю?
Цель-возможность дать юзеру менять картинки/ватемарки без залезания в исходный код
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace _42
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void openButton_Click(object sender, EventArgs e)
{
Bitmap image; //Bitmap для открываемого изображения
OpenFileDialog open_dialog = new OpenFileDialog(); //создание диалогового окна для выбора файла
open_dialog.Filter = "Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All files (*.*)|*.*"; //фильтруем все картинки по формату
if (open_dialog.ShowDialog() == DialogResult.OK) //если в окне была нажата кнопка "ОК"
{
try
{
image = new Bitmap(open_dialog.FileName); ///Bitmap для открываемой картинки
this.pictureBox1.Size = image.Size;
pictureBox1.Image = image;
pictureBox1.Invalidate();
}
catch
{
DialogResult result = MessageBox.Show("Невозможно открыть выбранный файл",
"Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void watermarkButton_Click(object sender, EventArgs e)
{
using (Image image = Image.FromFile(string filename)
using (Image watermarkImage = Image.FromFile(string filename))
using (Graphics imageGraphics = Graphics.FromImage(image))
using (TextureBrush watermarkBrush = new TextureBrush(watermarkImage))
{
int x = (image.Width / 2 - watermarkImage.Width / 2);
int y = (image.Height / 2 - watermarkImage.Height / 2);
watermarkBrush.TranslateTransform(x, y);
imageGraphics.FillRectangle(watermarkBrush, new Rectangle(new Point(x, y), new Size(watermarkImage.Width + 1, watermarkImage.Height)));
image.Save(string filename);
}
}
}
}