private void textBox1_TextChanged(object sender, EventArgs e)
{
Bitmap b = new Bitmap(Width, Height);
Graphics g = Graphics.FromImage(b);
for (int i = 0; i < 255; i++)
{
SolidBrush sb = new SolidBrush(Color.FromArgb(i, 0, 0));
// OR
// SolidBrush sb = new SolidBrush(Color.FromArgb(0, i, 0));
// SolidBrush sb = new SolidBrush(Color.FromArgb(0, 0, i));
g.DrawString(textBox1.Text, new Font("Arial", 24), sb, new PointF(i / 30, i / 30));
}
this.BackgroundImage=b;
}
برای گزارش گیری از داده ها، از نرم افزار های مختلفی میشه استفاده کرد اما از اونجایی Crystal Report نسخه ابتدایی اون به همرا Visual Studio به صورت رایگان عرضه میشه بسیاری دستان از اون برای گزارش گیری استفاده می کنند
برای گزارش گیری ابتدا یک پروژه ایجاد کرده و یک فرم به پروژه به نام FormReport اضافه کنید در این فرم از قسمت ابزار گزینه CrystalReportViewer را به فرم اضافه کنید .
از منوی Project -> Add New Item یک فایل Crystal Report را به پروژه اضافه کنید و در این قسمت با دوبار کلیک بر روی فایل تازه ایجاد شده ، صفحه Designer باز شده و به طراحی گزارش بپردازید ( توضیح این بخش مفصل بوده و از بحث این مقاله خارجه با کمی حوصله حتما می تونید که یک گزارش خوب طراحی کنید ) ،پس از طراحی گزارش آن را ذخیره کرده و به پروژه بر گردید .
در فرم اصلی برنامه یک عدد Button و یک عدد DataGridView قرار بدین و کدهای زیر را در فرم اصلی وارد کنید .
ابتدا یک متغییر عمومی به صورت زیر تعریف کنید (این روش و روشهایی دیگری که در این آموزش استفاده می شود پیشنهادی است و شما می توانید از روشهای دیگر نیز استفاده کنید)
private DataTable dataTableEmp = new DataTable();
در رویداد Load فرم نیز کد زیر را قرار دهید ( لازم به توضیح نیست که باید ابتدا کانکشن را ایجاد کنید )
dataTableEmp.Clear();
sqlConnection2.Open();
sqlDataAdapter1.Fill(dataTableEmp);
sqlConnection2.Close();
dataGridViewDB.DataSource = dataTableEmp;
و در نهایت نیز در Button مربوطه کد زیر را قرار دهید
FormReport f = new FormReport();
f.dataTableEmp = dataTableEmp;
f.ShowDialog();
من برای ارسال داده از یک متغییر عمومی به صورت Public در فرم دوم استفاده کرده ام ،شما می توانید از هر روشی که راحت تر هستید استفاده کنید .
در فرم دروم یعنی FormReport ابتدا یک متغییر عمومی به صورت زیر تعریف کرده
public DataTable dataTableEmp;
و در نهایت کدهای زیر را در رویداد Load فرم دوم قرار دهید
CrystalReport1 c = new CrystalReport1();
c.SetDataSource(dataTableEmp);
crystalReportViewer1.ReportSource = c;
private void Form1_Load(object sender, EventArgs e)
{
Bitmap b = new Bitmap(Width, Height);
for (int i = 0; i < this.Width; i++)
{
Graphics g = Graphics.FromImage(b);
g.DrawLine(new Pen(Brushes.Black), i - 1, (float)Math.Sin(Math.PI * (i - 1) / 180) * b.Height / 4 + this.Height / 2,
i, (float)Math.Sin(Math.PI * i / 180) * b.Height / 4 + this.Height / 2);
}
this.BackgroundImage = b;
}
double i = 0;
SolidBrush s = new SolidBrush(Color.Black);
private void timer1_Tick(object sender, EventArgs e)
{
Bitmap b = new Bitmap(pictureBox1.Image, pictureBox1.Size);
Graphics g = Graphics.FromImage(b);
i += 3;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
g.DrawLine(new Pen(Brushes.Black),
float.Parse((-Math.Cos(Math.PI * i / 180) * (b.Width / 20 + (i / 11)) + b.Width / 2).ToString()),
float.Parse((-Math.Sin(Math.PI * i / 180) * (b.Width / 20 + (i / 11)) + b.Width / 2).ToString()),
float.Parse((Math.Cos(Math.PI * (i - 1) / 180) * (b.Width / 20 + ((i - 1) / 11)) + b.Width / 2).ToString()),
float.Parse((Math.Sin(Math.PI * (i - 1) / 180) * (b.Width / 20 + ((i - 1) / 11)) + b.Width / 2).ToString())
);
pictureBox1.Image = b;
this.Text = i.ToString();
if (i >= 2660)
{
timer1.Enabled = false;
}
}
private void Form1_Load(object sender, EventArgs e)
{
Bitmap b = new Bitmap(pictureBox1.Width, pictureBox1.Height);
pictureBox1.Image = b;
}
using System.Drawing.Drawing2D;
private void Form1_Load(object sender, EventArgs e)
{
LinearGradientBrush lb = new LinearGradientBrush(this.ClientRectangle, Color.Red, Color.Black, 150);
ColorBlend cb = new ColorBlend();
Color[] c = new Color[] { Color.Green, Color.White, Color.Red };
cb.Colors = c;
cb.Positions = new float[] { 0.0f, 0.5f, 1f };
lb.InterpolationColors = cb;
Bitmap b = new Bitmap(Width, Height);
Graphics g = Graphics.FromImage(b);
g.FillRectangle(lb, this.ClientRectangle);
this.BackgroundImage = b;
}