PDA

View Full Version : سوال: تغییر transparent یا opacity یک عکس درون picturebox



R2du-soft
چهارشنبه 13 اسفند 1393, 17:03 عصر
با سلام و خسته نباشید به تمامی اساتید عزیز
دوستان من یک مشکلی دارم.
یک picturebox روی فرم قرار دادم و یک عکس از طریق قسمت property و گزینه image درون picturebox لود کردم،حالا چطور میتونم با یک دکمه میزان opacity این عکس درون picturebox رو مثلا به 50% تغییر بدم؟
توی سایت جست و جو کردم اما چیز خوبی گیرم نیومد،ممنون میشم اگه تو همین پست کمکم کنید.
با سپاس

یونس ابراهیمی
چهارشنبه 13 اسفند 1393, 18:09 عصر
با فرض اینکه یک عکس در درایو :C داریم و میخواهیم Opacity آن را تغییر دهیم از کد زیر استفاده می کنیم :

using System;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Imaging;

namespace ChangeOpacityPicture
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public static Bitmap ChangeOpacity(Image image, float opacityvalue)
{
Bitmap Bitmap1 = new Bitmap(image.Width, image.Height);
Graphics graphics = Graphics.FromImage(Bitmap1);
ColorMatrix colormatrix = new ColorMatrix();
colormatrix.Matrix33 = opacityvalue;
ImageAttributes ImageAttribute = new ImageAttributes();
ImageAttribute.SetColorMatrix(colormatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
graphics.DrawImage(image, new Rectangle(0, 0, Bitmap1.Width, Bitmap1.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, ImageAttribute);
graphics.Dispose();
return Bitmap1;
}

private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Image = ChangeOpacity(Image.FromFile(@"C:\Koala.jpg"), (0.5f));
}
}
}

http://www.w3-farsi.com/wp-content/uploads/2015/03/Change-opacity-picture-picturebox-c.png (http://www.w3-farsi.com/wp-content/uploads/2015/03/Change-opacity-picture-picturebox-c.png)


منبع : w3-farsi.com (http://www.w3-farsi.com)

R2du-soft
چهارشنبه 13 اسفند 1393, 20:22 عصر
واقعا ممنون مشکل حل شد فقط یک سوال دیگه

چطور میتونم میزان OPACITY عکس روی فرم رو چک کنم که اگه میزان OPACITY به نصب تغییر کرده بود دیگه تغییر نکنه چیزی مثل این *که اشتباهه*



if (pictureBox1.Image == ChangeOpacity(pictureBox1.Image, (0.5f)))
{

}

else

{
pictureBox1.Image = ChangeOpacity(pictureBox1.Image, (0.5f));
}

R2du-soft
چهارشنبه 13 اسفند 1393, 21:01 عصر
با استفاده از یک متغیر در اول برنامه و چک کردن اون متغیر مشکل حل شد.
باز هم ممنون از راهنمایی یونس ابراهیمی (http://barnamenevis.org/member.php?272349-%DB%8C%D9%88%D9%86%D8%B3-%D8%A7%D8%A8%D8%B1%D8%A7%D9%87%DB%8C%D9%85%DB%8C) عزیز




string val1 = "1";
private void button1_Click(object sender, EventArgs e)
{


if (val1 == "1")
{
pictureBox1.Image = ChangeOpacity(pictureBox1.Image, (0.5f));
val1 = "2";
}

}