PDA

View Full Version : تبدیل ( نوع رشته به نوع Color ) برای ذخیره رنگ در TXT



merlin_vista
پنج شنبه 01 شهریور 1386, 08:43 صبح
میخواستم بدونم که چه شکلی میشه مثلاً رنگ را از ColorDialog گرفت و تو یه فایل متنی ذخیره کرد و دفعه بعد در یک متغیر سراسری تعریف کرد که تمام رنگ های برنامه از آن استفاده بکند !!! :خجالت:
برای این کار ن این کد را نوشتم ولی نمیدانم که چه شکلی باید نوع استرینگ را به رنگ تبدیل کنم !

private void button1_Click(object sender, EventArgs e)
{
this.colorDialog1.ShowDialog();
b = this.colorDialog1.Color.Name;
s = this.colorDialog1.Color;
this.BackColor = s;
StreamWriter sw = File.CreateText(Environment.CurrentDirectory+"\\bank.txt");
sw.Write(b);
sw.Close();
}
string f;
private void Form1_Load(object sender, EventArgs e)
{
StreamReader sr = File.OpenText(Environment.CurrentDirectory + "\\bank.txt");
this.f = sr.ReadToEnd();
sr.Close();

اگر امکان دارد فقط راهنمایی کنید که چگونه نوع String را به Color تبدیل کنم !! :متفکر:
به یک برنامه نویس نازه وارد کمک کنید !!! :چشمک::لبخندساده::خجالت:

ghafoori
پنج شنبه 01 شهریور 1386, 09:09 صبح
دوست عزیز بهتر است شماره argb ان را ذخیره کنید و برای بازگست هم ار متد fromargb استفاده کنید مانند این کد

Color c;
int a;
a = c.ToArgb();
c = Color.FromArgb(a);

merlin_vista
پنج شنبه 01 شهریور 1386, 11:57 صبح
از پاسخ خوب و سریع شما سپاسگزارم !! :تشویق:
میشود کمی بیشتر توضیح بدهید ! :لبخندساده:

PC2st
پنج شنبه 01 شهریور 1386, 12:08 عصر
در هر صورت برای تبدیل string به Color باید آن را تفکیک کنید، اما برای ذخیره Color در یک فایل از روش دیگری استفاده کنید تا نیازی به تبدیل string به Color نباشه.

برای ذخیره انواعی که از نوع Color هستند از صفت Serializable استفاده کنید یا اینکه اینترفیس ISerializable را پیاده سازی کنید. با جستجو می توانید مطالب مورد نیازتون رو از سایت پیدا کنید.

hdv212
پنج شنبه 01 شهریور 1386, 12:40 عصر
برای ذخیره انواعی که از نوع Color هستند از صفت Serializable استفاده کنید یا اینکه اینترفیس ISerializable را پیاده سازی کنید. با جستجو می توانید مطالب مورد نیازتون رو از سایت پیدا کنید.
نیازی به Serialize کردن نیست، از این کد میتونید برای ذخیره کردن color مورد نظر در یه فایل متنی استفاده کنید :

Color c = colorDialog1.Color;
int a;
a = c.ToArgb();
System.IO.FileStream fstream = new System.IO.FileStream("test.txt", System.IO.FileMode.Create);
System.IO.StreamWriter sw = new System.IO.StreamWriter(fstream);
sw.Write(a);
sw.Close();
fstream.Close();

از این یکی هم میتونید شماره ی رنگ ذخیره شده رو بازیابی کنید :

System.IO.FileStream fstream = new System.IO.FileStream("test.txt", System.IO.FileMode.Open);
System.IO.StreamReader sr = new System.IO.StreamReader(fstream);
int a = int.Parse(sr.ReadToEnd());
sr.Close();
fstream.Close();
colorDialog1.Color = Color.FromArgb(a);

merlin_vista
پنج شنبه 01 شهریور 1386, 23:19 عصر
بالاخره بعد از جستجوهای فراوان و زحمت هم فرمی هایو با کمک فراوان دوستان مخصوصاً hdv212 (http://barnamenevis.org/forum/member.php?u=14084)
توانستیم این کار را انجام دهیم !! :لبخندساده: من که دیگه عاشق این فرم شدم و کاربرانش ! :قلب:

پس کار را به این ترتیب انجام دادم :

مواد لازم
1 - یک عدد دکمه با نام button1
2 - یک عدد کالردیالوگ با نام colorDialog1
3 - یک پرژه
4 - همین و کد زیر :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

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

private void button1_Click(object sender, EventArgs e)
{
this.colorDialog1.ShowDialog();
Color c = colorDialog1.Color;
int a;
a = c.ToArgb();
FileStream fstream = new FileStream("test.txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fstream);
sw.Write(a);
sw.Close();
fstream.Close();
this.BackColor = colorDialog1.Color;
}

private void Form1_Load(object sender, EventArgs e)
{
FileStream fstream = new FileStream("test.txt", FileMode.Open);
StreamReader sr = new StreamReader(fstream);
int a = int.Parse(sr.ReadToEnd());
sr.Close();
fstream.Close();
colorDialog1.Color = Color.FromArgb(a);
this.BackColor = colorDialog1.Color;
}
}
}

با نهایت تشکر :قلب::لبخندساده::بوس:
شما میتوانید آن رنگ را که از فایل TXT میخوانید در یک متغیر بریزید و در بقیه فرم ها از آن استفاده کنید :لبخندساده: