А как в C# Можно найти на каком диске стоит винда? Выложите плиз кто нить код
» Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET
Felibreon
Цитата:
типа так
Код: string s = Path.GetPathRoot(Environment.SystemDirectory);
Цитата:
А как в C# Можно найти на каком диске стоит винда?
типа так
Код: string s = Path.GetPathRoot(Environment.SystemDirectory);
Ошибка 1 Элемент "Path" не существует в текущем контексте. C:\Documents and Settings\TEMP\Мои документы\Visual Studio 2008\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 12 24 ConsoleApplication1
Что ему нужно? Нуно библиотеку подключать?
Что ему нужно? Нуно библиотеку подключать?
Felibreon
Цитата:
System.IO подключил? (using System.IO;)
Цитата:
Что ему нужно? Нуно библиотеку подключать?
System.IO подключил? (using System.IO;)
Все заработало. СПС ОГРОМНОЕ!!!
Кто нибудь знает, можно где нибудь найти код сортировщика Рабочего стола на C#.
Кто нибудь знает, можно где нибудь найти код сортировщика Рабочего стола на C#.
Подскажите код. Нуно сканировать Рабочий стол. Выявить кол-во файлов, их формат, и дату создания. Потом переместить в нужные папки(условие-формат)
Felibreon
Получай свой код:
Код: // Получаем каталог (в данном случае рабочий стол текущего пользователя)
DirectoryInfo di = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
// получаем список файлов в каталоге
FileInfo[] files = di.GetFiles();
files.Length // количество файлов
// перебираем файлы
foreach (var file in files)
{
file.CopyTo("Путь"); // скопировать файл
file.Extension // получить расширение файла
file.CreationTime // получить время создания
}
Получай свой код:
Код: // Получаем каталог (в данном случае рабочий стол текущего пользователя)
DirectoryInfo di = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop));
// получаем список файлов в каталоге
FileInfo[] files = di.GetFiles();
files.Length // количество файлов
// перебираем файлы
foreach (var file in files)
{
file.CopyTo("Путь"); // скопировать файл
file.Extension // получить расширение файла
file.CreationTime // получить время создания
}
javascript:pasteN('Omicron_Persey_8')
От души!!! Спасибо огромное. Это реально самый классный форум. Как напишу прогу, выложу, может пригодиться.
Всем еще раз огромное СПС.
Добавлено:
=) Еще вопрос. Сори что так много задаю, я C# только пол года изучаю.
Код создания папки. Файлы то я знаю как создавать, а вот как папку, что-то не догоню.
От души!!! Спасибо огромное. Это реально самый классный форум. Как напишу прогу, выложу, может пригодиться.
Всем еще раз огромное СПС.
Добавлено:
=) Еще вопрос. Сори что так много задаю, я C# только пол года изучаю.
Код создания папки. Файлы то я знаю как создавать, а вот как папку, что-то не догоню.
Felibreon
Цитата:
книжку купи или MSDN почитай что-ли...
вот тут неплохие примеры
http://progs.biz/csharp/csharp/lessons/051.aspx
http://progs.biz/csharp/csharp/lessons/054.aspx
Цитата:
Файлы то я знаю как создавать, а вот как папку, что-то не догоню.
книжку купи или MSDN почитай что-ли...
вот тут неплохие примеры
http://progs.biz/csharp/csharp/lessons/051.aspx
http://progs.biz/csharp/csharp/lessons/054.aspx
V0lt СПС. Я пока только учусь, так что мне положено задовать вопросы.
Есть книжка Герберт Шилдт:C# 2.0. Но там этого я ничего не нашел
Есть книжка Герберт Шилдт:C# 2.0. Но там этого я ничего не нашел
Felibreon
Поищи в нете (на многих трекерах валяется) такую то ли книгу, то ли курс лекций: ИНТУИТ - Разработка Windows-приложений на основе Visual C#. Там на диске большая куча всяких примеров и разбирается все это по шагам.
Поищи в нете (на многих трекерах валяется) такую то ли книгу, то ли курс лекций: ИНТУИТ - Разработка Windows-приложений на основе Visual C#. Там на диске большая куча всяких примеров и разбирается все это по шагам.
Ищу самоучитель VisualStudio.NET
Если не в той теме - подскажите, где искать. Но ссылка на самоучитель все- же лучше. Спасибочки от Чайника (женского рода)
Если не в той теме - подскажите, где искать. Но ссылка на самоучитель все- же лучше. Спасибочки от Чайника (женского рода)
В самом VisualStudio.NET учить нечего. Это всего лишь среда разработки в которой объеденили несколько языков. Скажи что именно ты хочешь выучить.
Вопрос
VB.Net
Есть код:
...
Dim thr As New Threading.Thread(AddressOf deleteHiddenText_ForDoc)
thr.Start(wD)
...
Private Sub deleteHiddenText_ForDoc(ByVal doc As Interop.Word.Document)
...
Всё работает, это понятно.
Но во т когда включаю Option Strict On , то начинает ругаться, thr в первой строке подчеркивается, мол "Не удалось разрешить перегрузку, так как ни один доступный New не может быть вызван с данными аргументами ..."
Понимаю, что нужно как-то расписать это дело, но в msdn не нашел, они там в примерах видать юзают Option Strict Off
Добавлено:
А вот нашел в msdn:
Использование делегата ParameterizedThreadStart не является безопасным способом передачи данных, так как перегрузка метода Thread..::.Start принимает любой объект. Альтернативой является инкапсуляция процедуры потока и данных во вспомогательном классе и использование делегата ThreadStart для выполнения процедуры потока.
Так что, это хроническое. Но зато если без передачи параметра - всё норм.
VB.Net
Есть код:
...
Dim thr As New Threading.Thread(AddressOf deleteHiddenText_ForDoc)
thr.Start(wD)
...
Private Sub deleteHiddenText_ForDoc(ByVal doc As Interop.Word.Document)
...
Всё работает, это понятно.
Но во т когда включаю Option Strict On , то начинает ругаться, thr в первой строке подчеркивается, мол "Не удалось разрешить перегрузку, так как ни один доступный New не может быть вызван с данными аргументами ..."
Понимаю, что нужно как-то расписать это дело, но в msdn не нашел, они там в примерах видать юзают Option Strict Off
Добавлено:
А вот нашел в msdn:
Использование делегата ParameterizedThreadStart не является безопасным способом передачи данных, так как перегрузка метода Thread..::.Start принимает любой объект. Альтернативой является инкапсуляция процедуры потока и данных во вспомогательном классе и использование делегата ThreadStart для выполнения процедуры потока.
Так что, это хроническое. Но зато если без передачи параметра - всё норм.
Как можно засунуть прогу в автозагрузку?
Felibreon
Обычно в меню программ есть пункт "автозагрузка" - добавить туда ярлык.
Более сложные варианты - создать ключ в спец ветке реестра.
Обычно в меню программ есть пункт "автозагрузка" - добавить туда ярлык.
Более сложные варианты - создать ключ в спец ветке реестра.
Felibreon
Я предпочитаю автозагрузку не из реестра , а с ярлыка в автозагрузке
Чтобы создать ярлык используй WshShell
Вот некоторый код vbscript нашел (главное суть)
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Shortcut Script.lnk")
oShellLink.TargetPath = WScript.ScriptFullName
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "CTRL+SHIFT+F"
oShellLink.IconLocation = "notepad.exe, 0"
oShellLink.Description = "Shortcut Script"
oShellLink.WorkingDirectory = strDesktop
oShellLink.Save
set oUrlLink = WshShell.CreateShortcut(strDesktop & "\Microsoft Web Site.url")
oUrlLink.TargetPath = "http://www.microsoft.com"
oUrlLink.Save
Я предпочитаю автозагрузку не из реестра , а с ярлыка в автозагрузке
Чтобы создать ярлык используй WshShell
Вот некоторый код vbscript нашел (главное суть)
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Shortcut Script.lnk")
oShellLink.TargetPath = WScript.ScriptFullName
oShellLink.WindowStyle = 1
oShellLink.Hotkey = "CTRL+SHIFT+F"
oShellLink.IconLocation = "notepad.exe, 0"
oShellLink.Description = "Shortcut Script"
oShellLink.WorkingDirectory = strDesktop
oShellLink.Save
set oUrlLink = WshShell.CreateShortcut(strDesktop & "\Microsoft Web Site.url")
oUrlLink.TargetPath = "http://www.microsoft.com"
oUrlLink.Save
Привет всем, подскажите что не правильного в коде. На форме несколько текст боксов и данные должны заноситься в разные таблицы одной базы данных. Пишется на asp.net c# , вобще новичек и только учусь так что не ругайтесь сильно )))
<script runat="server">
SqlDataAdapter myAdapter;
DataSet myDataSet;
private void RetrieveNotes()
{
// set the SQL query we need to get the information
string strQuery = "SELECT Информация.Номер, Информация.Стоимость, Информация.Место, Информация.Дополнительно, Игрок.ID, Игрок.Имя, Игрок.Фамилия, Игрок.Отчество FROM Информация INNER JOIN Игрок ON Информация.Игрок = Игрок.Игрок";
// create the Connection to the database
string ConnectionString = ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString;
SqlConnection myConnection = new SqlConnection(ConnectionString);
// create the DataAdapter
myAdapter = new SqlDataAdapter(strQuery, myConnection);
// set up the INSERT/UPDATE/DELETE queries
SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);
// create a new DataSet
myDataSet = new DataSet();
// fill the DataSet
myAdapter.Fill(myDataSet, "Игрок, Информация");
// now add the primary key details
DataColumn[] myPrimaryKey = { myDataSet.Tables["Игрок, Информация"].Columns["Номер, ID"] };
myDataSet.Tables["Игрок, Информация"].PrimaryKey = myPrimaryKey;
}
protected void SaveButton_Click(object sender, EventArgs e)
{
// only save if valid
if (Page.IsValid == true)
{
RetrieveNotes();
// create a new DataRow
DataRow drNotes = myDataSet.Tables["Игрок, Информация"].NewRow();
// now set the column values
drNotes["Игрок.Имя"] = PlayerName.Text;
drNotes["Игрок.Фамилия"] = PlayerFam.Text;
drNotes["Игрок.Отчество"] = PlayerOt.Text;
drNotes["Информация.Место"] = Place.Text;
drNotes["Информация.Стоимость"] = Cost.Text;
drNotes["Информация.Дополнительно"] = Another.Text;
// add a temporary primary key value
drAdministative["ID, Номер"] = "-1";
// add the DataRow to the table
myDataSet.Tables["Игрок, Информация"].Rows.Add(drNotes);
try
{
// now update the database
myAdapter.Update(myDataSet, "Игрок, Информация");
// show the result
Result.Text = "Данные занесены";
catch (Exception ex)
{
// show the error
Result.Text = "Ошибка занесения данных " + ex.Message;
}
}
}
</script>
<script runat="server">
SqlDataAdapter myAdapter;
DataSet myDataSet;
private void RetrieveNotes()
{
// set the SQL query we need to get the information
string strQuery = "SELECT Информация.Номер, Информация.Стоимость, Информация.Место, Информация.Дополнительно, Игрок.ID, Игрок.Имя, Игрок.Фамилия, Игрок.Отчество FROM Информация INNER JOIN Игрок ON Информация.Игрок = Игрок.Игрок";
// create the Connection to the database
string ConnectionString = ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString;
SqlConnection myConnection = new SqlConnection(ConnectionString);
// create the DataAdapter
myAdapter = new SqlDataAdapter(strQuery, myConnection);
// set up the INSERT/UPDATE/DELETE queries
SqlCommandBuilder myCommandBuilder = new SqlCommandBuilder(myAdapter);
// create a new DataSet
myDataSet = new DataSet();
// fill the DataSet
myAdapter.Fill(myDataSet, "Игрок, Информация");
// now add the primary key details
DataColumn[] myPrimaryKey = { myDataSet.Tables["Игрок, Информация"].Columns["Номер, ID"] };
myDataSet.Tables["Игрок, Информация"].PrimaryKey = myPrimaryKey;
}
protected void SaveButton_Click(object sender, EventArgs e)
{
// only save if valid
if (Page.IsValid == true)
{
RetrieveNotes();
// create a new DataRow
DataRow drNotes = myDataSet.Tables["Игрок, Информация"].NewRow();
// now set the column values
drNotes["Игрок.Имя"] = PlayerName.Text;
drNotes["Игрок.Фамилия"] = PlayerFam.Text;
drNotes["Игрок.Отчество"] = PlayerOt.Text;
drNotes["Информация.Место"] = Place.Text;
drNotes["Информация.Стоимость"] = Cost.Text;
drNotes["Информация.Дополнительно"] = Another.Text;
// add a temporary primary key value
drAdministative["ID, Номер"] = "-1";
// add the DataRow to the table
myDataSet.Tables["Игрок, Информация"].Rows.Add(drNotes);
try
{
// now update the database
myAdapter.Update(myDataSet, "Игрок, Информация");
// show the result
Result.Text = "Данные занесены";
catch (Exception ex)
{
// show the error
Result.Text = "Ошибка занесения данных " + ex.Message;
}
}
}
</script>
nikou
А по-подробнее? Где-то вылетает? Или работает некорректно?
А по-подробнее? Где-то вылетает? Или работает некорректно?
ребят, подскажите.
есть 2 массива.в обоих имена файлов с различным регистром в имени, но файлы одинаковые по содержанию.
так вот как реализовать при сравнеии массива 1 с массивом 2, чтобы не учитывался регистр имен файлов, кот находятся в массивах?только по имени.
и еще вопросик .
у меня в ShowBalloonTip не все строки влазят =)
Код:
this.notifyIcon1.ShowBalloonTip(500, "", "" + firstfile, ToolTipIcon.Info);
есть 2 массива.в обоих имена файлов с различным регистром в имени, но файлы одинаковые по содержанию.
так вот как реализовать при сравнеии массива 1 с массивом 2, чтобы не учитывался регистр имен файлов, кот находятся в массивах?только по имени.
и еще вопросик .
у меня в ShowBalloonTip не все строки влазят =)
Код:
this.notifyIcon1.ShowBalloonTip(500, "", "" + firstfile, ToolTipIcon.Info);
Доброго времени суток!
нужна помощь, если сможите помогите плиз))
Создаю тест, почти всё сделал только вот с последнем проблемка, не могу никак подсчитать балы для результата...совсем не соображу
вот мой код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Курсовая
{
public partial class Form1 : Form
{
int Num;
List<string> questions = new List<string>();
int[] answers;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked) answers[Num] = 4;
if (radioButton2.Checked) answers[Num] = 3;
if (radioButton3.Checked) answers[Num] = 2;
if (radioButton4.Checked) answers[Num] = 1;
Num++;
richTextBox1.Text = questions[Num];
switch (answers[Num])
{
case 4: radioButton1.Checked = true; break;
case 3: radioButton2.Checked = true; break;
case 2: radioButton3.Checked = true; break;
case 1: radioButton4.Checked = true; break;
}
}
private void Form1_Load(object sender, EventArgs e)
{
questions.Add("Я чувствителен к молве.");
questions.Add("Я нуждаюсь в одобрении близких.");
questions.Add("Я бываю обескуражен проваломю");
questions.Add("Я смотрю телевизор, занимаясь чем-то другим.");
questions.Add("Я люблю читать любовные романы.");
questions.Add("Я придаю значения деталям.");
questions.Add("Я чувствую себя неловко в незнакомых ситуациях.");
questions.Add("Я всё время нуждаюсь в движении, действии.");
questions.Add("Я люблю конкретные,чёткие объяснения.");
questions.Add("Я скорее нетерпелив.");
questions.Add("Я уделяю много внимания своей внешности.");
questions.Add("Я с беспокойством думаю о будущем.");
questions.Add("Я плохо воспринимаю критику.");
questions.Add("Я легко отвлекаюсь.");
questions.Add("Я спонтанно говорю то, что думаю.");
answers = new int[15];
Num = 0;
richTextBox1.Text = questions[0];
}
private void button3_Click(object sender, EventArgs e)
{
if (radioButton1.Checked) answers[Num] = 4;
if (radioButton2.Checked) answers[Num] = 3;
if (radioButton3.Checked) answers[Num] = 2;
if (radioButton4.Checked) answers[Num] = 1;
Num--;
richTextBox1.Text = questions[Num];
switch (answers[Num])
{
case 4: radioButton1.Checked = true; break;
case 3: radioButton2.Checked = true; break;
case 2: radioButton3.Checked = true; break;
case 1: radioButton4.Checked = true; break;
}
}
}
}
нужна помощь, если сможите помогите плиз))
Создаю тест, почти всё сделал только вот с последнем проблемка, не могу никак подсчитать балы для результата...совсем не соображу
вот мой код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Курсовая
{
public partial class Form1 : Form
{
int Num;
List<string> questions = new List<string>();
int[] answers;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked) answers[Num] = 4;
if (radioButton2.Checked) answers[Num] = 3;
if (radioButton3.Checked) answers[Num] = 2;
if (radioButton4.Checked) answers[Num] = 1;
Num++;
richTextBox1.Text = questions[Num];
switch (answers[Num])
{
case 4: radioButton1.Checked = true; break;
case 3: radioButton2.Checked = true; break;
case 2: radioButton3.Checked = true; break;
case 1: radioButton4.Checked = true; break;
}
}
private void Form1_Load(object sender, EventArgs e)
{
questions.Add("Я чувствителен к молве.");
questions.Add("Я нуждаюсь в одобрении близких.");
questions.Add("Я бываю обескуражен проваломю");
questions.Add("Я смотрю телевизор, занимаясь чем-то другим.");
questions.Add("Я люблю читать любовные романы.");
questions.Add("Я придаю значения деталям.");
questions.Add("Я чувствую себя неловко в незнакомых ситуациях.");
questions.Add("Я всё время нуждаюсь в движении, действии.");
questions.Add("Я люблю конкретные,чёткие объяснения.");
questions.Add("Я скорее нетерпелив.");
questions.Add("Я уделяю много внимания своей внешности.");
questions.Add("Я с беспокойством думаю о будущем.");
questions.Add("Я плохо воспринимаю критику.");
questions.Add("Я легко отвлекаюсь.");
questions.Add("Я спонтанно говорю то, что думаю.");
answers = new int[15];
Num = 0;
richTextBox1.Text = questions[0];
}
private void button3_Click(object sender, EventArgs e)
{
if (radioButton1.Checked) answers[Num] = 4;
if (radioButton2.Checked) answers[Num] = 3;
if (radioButton3.Checked) answers[Num] = 2;
if (radioButton4.Checked) answers[Num] = 1;
Num--;
richTextBox1.Text = questions[Num];
switch (answers[Num])
{
case 4: radioButton1.Checked = true; break;
case 3: radioButton2.Checked = true; break;
case 2: radioButton3.Checked = true; break;
case 1: radioButton4.Checked = true; break;
}
}
}
}
avkorets
Цитата:
Как всегда миллионом способов:
Код: Compare(String, String, Boolean)
Цитата:
как реализовать при сравнеии массива 1 с массивом 2, чтобы не учитывался регистр имен файлов
Как всегда миллионом способов:
Код: Compare(String, String, Boolean)
Спасибо большое!
но у меня еще один вопрос...делайю прогу, типа небольшого фотошопа, написал код для изменения цветов красного, синего и зелённого....вроде работает, но как-то не так) медленно и не аккуратно меняет цвета...посмотрите плиззз
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace ФотоЖоп
{
public partial class Form1 : Form
{
Panel panel;
Label[] alabelName = new Label[33];
Label[] alabelValue = new Label[33];
VScrollBar[] avsscroll = new VScrollBar[33];
protected Image image;
private void Form1_Load(object sender, EventArgs e)
{
Application.Run(new Form1());
}
public Form1()
{
Text = "ФотоЖоп";
Color[] acolor = { Color.Red, Color.Green, Color.Blue };
panel = new Panel();
panel.Parent = this;
panel.Location = new Point(0, 0);
panel.BackColor = Color.White;
for (int i = 0; i < 3; i++)
{
alabelName[i] = new Label();
alabelName[i].Parent = panel;
alabelName[i].ForeColor = acolor[i];
alabelName[i].Text = "" + acolor[i].ToKnownColor();
alabelName[i].TextAlign = ContentAlignment.MiddleCenter;
avsscroll[i] = new VScrollBar();
avsscroll[i].Parent = panel;
avsscroll[i].SmallChange = 1;
avsscroll[i].LargeChange = 16;
avsscroll[i].Minimum = 0;
avsscroll[i].Maximum = 255 + avsscroll[i].LargeChange - 1;
avsscroll[i].ValueChanged += new EventHandler(ScrollOnValueChanged);
avsscroll[i].TabStop = true;
alabelValue[i] = new Label();
alabelValue[i].Parent = panel;
alabelValue[i].TextAlign = ContentAlignment.MiddleCenter;
}
Color color = BackColor;
avsscroll[0].Value = color.R;
avsscroll[1].Value = color.G;
avsscroll[2].Value = color.B;
OnResize(EventArgs.Empty);
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
int cx = ClientSize.Width;
int cy = ClientSize.Height;
int cyFont = Font.Height;
panel.Size = new Size(cx / 2, cy);
for (int i = 0; i < 3; i++)
{
alabelName[i].Location = new Point(i * cx / 6, cyFont / 2);
alabelName[i].Size = new Size(cx / 6, cyFont);
avsscroll[i].Location = new Point((4 * i + 1) * cx / 24, 2 * cyFont);
avsscroll[i].Size = new Size(cx / 12, cy - 4 * cyFont);
alabelValue[i].Location = new Point(i * cx / 6, cy - 3 * cyFont / 2);
alabelValue[i].Size = new Size(cx / 6, cyFont);
}
}
void ScrollOnValueChanged(object sender, EventArgs e)
{
for (int i = 0; i < 3; i++)
if ((VScrollBar)sender == avsscroll[i])
alabelValue[i].Text = avsscroll[i].Value.ToString();
if (image != null)
{
Bitmap B = new Bitmap(image);
for (int x = 0; x < B.Width; x++)
for (int y = 0; y < B.Height; y++)
{
Color c = B.GetPixel(x, y);
byte p = (byte)(c.R + avsscroll[0].Value);
byte q = (byte)(c.G + avsscroll[1].Value);
byte r = (byte)(c.B + avsscroll[2].Value);
B.SetPixel(x, y, Color.FromArgb(p, q, r));
}
image = (Image)(B.Clone());
}
Invalidate();
}
}
}
но у меня еще один вопрос...делайю прогу, типа небольшого фотошопа, написал код для изменения цветов красного, синего и зелённого....вроде работает, но как-то не так) медленно и не аккуратно меняет цвета...посмотрите плиззз
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace ФотоЖоп
{
public partial class Form1 : Form
{
Panel panel;
Label[] alabelName = new Label[33];
Label[] alabelValue = new Label[33];
VScrollBar[] avsscroll = new VScrollBar[33];
protected Image image;
private void Form1_Load(object sender, EventArgs e)
{
Application.Run(new Form1());
}
public Form1()
{
Text = "ФотоЖоп";
Color[] acolor = { Color.Red, Color.Green, Color.Blue };
panel = new Panel();
panel.Parent = this;
panel.Location = new Point(0, 0);
panel.BackColor = Color.White;
for (int i = 0; i < 3; i++)
{
alabelName[i] = new Label();
alabelName[i].Parent = panel;
alabelName[i].ForeColor = acolor[i];
alabelName[i].Text = "" + acolor[i].ToKnownColor();
alabelName[i].TextAlign = ContentAlignment.MiddleCenter;
avsscroll[i] = new VScrollBar();
avsscroll[i].Parent = panel;
avsscroll[i].SmallChange = 1;
avsscroll[i].LargeChange = 16;
avsscroll[i].Minimum = 0;
avsscroll[i].Maximum = 255 + avsscroll[i].LargeChange - 1;
avsscroll[i].ValueChanged += new EventHandler(ScrollOnValueChanged);
avsscroll[i].TabStop = true;
alabelValue[i] = new Label();
alabelValue[i].Parent = panel;
alabelValue[i].TextAlign = ContentAlignment.MiddleCenter;
}
Color color = BackColor;
avsscroll[0].Value = color.R;
avsscroll[1].Value = color.G;
avsscroll[2].Value = color.B;
OnResize(EventArgs.Empty);
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
int cx = ClientSize.Width;
int cy = ClientSize.Height;
int cyFont = Font.Height;
panel.Size = new Size(cx / 2, cy);
for (int i = 0; i < 3; i++)
{
alabelName[i].Location = new Point(i * cx / 6, cyFont / 2);
alabelName[i].Size = new Size(cx / 6, cyFont);
avsscroll[i].Location = new Point((4 * i + 1) * cx / 24, 2 * cyFont);
avsscroll[i].Size = new Size(cx / 12, cy - 4 * cyFont);
alabelValue[i].Location = new Point(i * cx / 6, cy - 3 * cyFont / 2);
alabelValue[i].Size = new Size(cx / 6, cyFont);
}
}
void ScrollOnValueChanged(object sender, EventArgs e)
{
for (int i = 0; i < 3; i++)
if ((VScrollBar)sender == avsscroll[i])
alabelValue[i].Text = avsscroll[i].Value.ToString();
if (image != null)
{
Bitmap B = new Bitmap(image);
for (int x = 0; x < B.Width; x++)
for (int y = 0; y < B.Height; y++)
{
Color c = B.GetPixel(x, y);
byte p = (byte)(c.R + avsscroll[0].Value);
byte q = (byte)(c.G + avsscroll[1].Value);
byte r = (byte)(c.B + avsscroll[2].Value);
B.SetPixel(x, y, Color.FromArgb(p, q, r));
}
image = (Image)(B.Clone());
}
Invalidate();
}
}
}
Всем добрый вечер, вопрос по WPF :
В памяти есть обьект System.Drawing.Icon с некой иконкой.
У формы есть свойство Window.Icon имеющее тип ImageSource,
что на самом деле является URI ссылкой(ориентация под www и
совместимость с SilverLight)
Вопрос в том как поместить эту иконку на форму не сохраняя ее на диск.
В памяти есть обьект System.Drawing.Icon с некой иконкой.
У формы есть свойство Window.Icon имеющее тип ImageSource,
что на самом деле является URI ссылкой(ориентация под www и
совместимость с SilverLight)
Вопрос в том как поместить эту иконку на форму не сохраняя ее на диск.
LuckyStrike
Ну, первое, что бросается в глаза, это пара функций GetPixel/SetPixel. В .NET их производительность ужасна, особенно, если применять их к каждому пикселу bitmap'а. Да и к тому же, чтобы залить bitmap одним цветом не обязятельно делать это попиксельно. Почему бы не нарисовать прямоугольник определенного цвета?
Код: Graphics g = Graphics.FromImage(bitmap); // Создаем канву для рисования из Bitmap'а
g.Clear(Color.LightBlue); // Заливаем фон
g.FillRectangle(Brushes.Red, 10,10,50,50); // Что-нибудь рисуем
g.Dispose(); // И удаляем канву, чтобы не мешалась
Ну, первое, что бросается в глаза, это пара функций GetPixel/SetPixel. В .NET их производительность ужасна, особенно, если применять их к каждому пикселу bitmap'а. Да и к тому же, чтобы залить bitmap одним цветом не обязятельно делать это попиксельно. Почему бы не нарисовать прямоугольник определенного цвета?
Код: Graphics g = Graphics.FromImage(bitmap); // Создаем канву для рисования из Bitmap'а
g.Clear(Color.LightBlue); // Заливаем фон
g.FillRectangle(Brushes.Red, 10,10,50,50); // Что-нибудь рисуем
g.Dispose(); // И удаляем канву, чтобы не мешалась
Господа Гуру, подскажите,
как можно на C# снять скриншот с компонента наследника от Control
и загрузить его в компонент PictureBox не используя временных файлов (ну к примеру пользуясь MemoryStream'ами) ?
как можно на C# снять скриншот с компонента наследника от Control
и загрузить его в компонент PictureBox не используя временных файлов (ну к примеру пользуясь MemoryStream'ами) ?
Omicron_Persey_8
Прямоугольник определенного цвета мне не надо, я же говорю, создаю по типа фотошопа, то есть цвета менять на какой-либо картинке
Прямоугольник определенного цвета мне не надо, я же говорю, создаю по типа фотошопа, то есть цвета менять на какой-либо картинке
Цитата:
Omicron_Persey_8
А чего она в памяти-то? Во время выполнения рисуется что ли? Что мешает ее сохранить?
Ну если совсем нужно, то обрати внимание на System.Windows.Media.Imaging.BitmapSource, у которого есть метод Create, позволяющий загружать bitmap из массива пикселов
Create(Int32, Int32, Double, Double, PixelFormat, BitmapPalette, Array, Int32) - Creates a new BitmapSource from an array of pixels.
Сreate(Int32, Int32, Double, Double, PixelFormat, BitmapPalette, IntPtr, Int32, Int32) - Creates a new BitmapSource from an array of pixels that are stored in unmanaged memory.
Иконка не внутри формы, это иконка самой формы, а переделывать template совсем не хочется. как получить BitмapSource я знаю, вот только это не то что нужно (несовместимые типы) нужен ImageSource.
А конка обьектом а не ссылкой потомучто берется из коллекции System.Drawing.SystemIcons
если такскать с приложением набор картинок то не будет зависимости от настроек системы, а сохранять картинку каждый раз при вызове окна - глупость
May_Johnson
Код: Image myImage = new Image();
// Set image source.
myImage.Source = Imaging.CreateBitmapSourceFromHIcon(System.Drawing.SystemIcons.Information.Handle, new Int32Rect(0, 0, 32, 32), System.Windows.Media.Imaging.BitmapSizeOptions.FromWidthAndHeight(32, 32));
this.Icon = myImage.Source;
Код: Image myImage = new Image();
// Set image source.
myImage.Source = Imaging.CreateBitmapSourceFromHIcon(System.Drawing.SystemIcons.Information.Handle, new Int32Rect(0, 0, 32, 32), System.Windows.Media.Imaging.BitmapSizeOptions.FromWidthAndHeight(32, 32));
this.Icon = myImage.Source;
Omicron_Persey_8
А ти мне бы не мог подкинуть пару ссылочек с кодами, мне нужно еще написать увелечение, уменьшение картинки и кадрирование(то есть вырезать определенный кусок из картинки)
А ти мне бы не мог подкинуть пару ссылочек с кодами, мне нужно еще написать увелечение, уменьшение картинки и кадрирование(то есть вырезать определенный кусок из картинки)
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
Предыдущая тема: Как удалить/добавить/отключить/включить устройство?
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.