PDA

View Full Version : سوال: چطور میشه شفافیت فرم رو تو حالت اجرا تغییر داد



amir8008
شنبه 29 فروردین 1388, 13:20 عصر
سلام! میخوام یه برنامه بنویسم که توی آن بشه شفافیت یا Opacity را تو حالت اجرا تغییر داد. البته میخوام با این کار یه افکت واسه زمانی که فرم باز و بسته میشه درست کنم مثل ویندوز ویستا!!!
حالا اگه از دوستان کسی هست که بدونه اینکار تو زمان اجرا چطوری عملی میشه ممنون میشم که کمک کنه...:لبخندساده::لبخندساده:

علیرضا مداح
شنبه 29 فروردین 1388, 13:55 عصر
سلام دوست عزیز،
باید از پروپرتی Opacity بهره بگیرید که مقدار آن بین 0 تا 1 می تواند تغییر کند:


private void Form1_Load(object sender, EventArgs e)
{
this.Opacity = 0.5;
}

،/

zahra111
شنبه 29 فروردین 1388, 19:38 عصر
اگه منظورتون دادن افکته، بهتره با استفاده از کنترلTimer ، خاصیت opacity فرم رو کم کم اضافه کنی.

prankster
شنبه 29 فروردین 1388, 19:46 عصر
خیلی وقت پیش این کلاس را نوشته بودم، اگر حافظه ام درست یاری کند چیزی شبیه به کد زیر بود، اگر مشکلی داشت بگویید تا برطرف کنم

کلاس tween:


using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;

namespace Transitions
{
public class Tween
{
public event EventHandler FadeStart;
public event EventHandler FadeFinish;

private BackgroundWorker worker;
private bool IsBusy
{
get { return worker.IsBusy; }
}

private void OnFadeStart()
{
if (FadeStart != null)
FadeStart(this, new EventArgs());
}

private void OnFadeFinish()
{
if (FadeFinish != null)
FadeFinish(this, new EventArgs());
}

public Tween(Form FormObject, double fromOpacity, double toOpacity, double duration)
{
worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;

double opacity = fromOpacity;
double jump = Math.Abs(toOpacity - fromOpacity) / duration;

worker.DoWork += (sender, e) =>
{
OnFadeStart();

if (fromOpacity < toOpacity)
{
while (opacity < toOpacity)
{
if (FormObject == null || FormObject.IsDisposed)
Stop();

if (worker.CancellationPending)
return;

opacity += jump;

Thread.Sleep(1);

int progress = (int)Math.Floor(opacity / Math.Abs(toOpacity - fromOpacity) * 100);
worker.ReportProgress(progress);
}
}
else
{
while (opacity > toOpacity)
{
if (FormObject == null || FormObject.IsDisposed)
Stop();

if (worker.CancellationPending)
return;

opacity -= jump;

Thread.Sleep(1);

int progress = (int)Math.Floor(opacity / Math.Abs(toOpacity - fromOpacity) * 100);
worker.ReportProgress(progress);
}
}
OnFadeFinish();
};

worker.ProgressChanged += (sender, e) =>
{
FormObject.Opacity = opacity;
};
}

public void Start()
{
if (IsBusy)
Stop();

worker.RunWorkerAsync();
}

public void Stop()
{
worker.CancelAsync();
}
}
}



استفاده در وفقه FormShown:


private void Form1_Shown(object sender, EventArgs e)
{
Transitions.Tween t = new Transitions.Tween(this, 0, 1, 500);
t.Start();
}


فرم از opacity برابر 0 تا مقدار 1 در زمان 500 میلی ثانیه fade می شود

mahdi_7610
شنبه 29 فروردین 1388, 20:55 عصر
سلام

http://www.codeproject.com/KB/cs/OpacityInCSharp.aspx

موفق باشید.

sedghi_7020@yahoo.com
دوشنبه 28 اردیبهشت 1388, 00:56 صبح
سلام
خسته نباشید
می خواستم بدونم چه طوری میشه آیکون برنامه رو کنار ساعت گذاشت(وقتی که minimizeمی شه)؟
با تشکر:تشویق:
منتظره جابتون هستم

مهدی رحیم زاده
دوشنبه 28 اردیبهشت 1388, 07:29 صبح
سلام
خسته نباشید
می خواستم بدونم چه طوری میشه آیکون برنامه رو کنار ساعت گذاشت(وقتی که minimizeمی شه)؟
با تشکر
منتظره جابتون هستم
دوست عزیز هر سئوال رو جای خودش بپرسید.
تو هر تاپیک یک سئول رو دنبال کنید .
http://barnamenevis.org/forum/showthread.php?t=160218