Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET

Автор: Omicron_Persey_8
Дата сообщения: 29.05.2009 12:11
LuckyStrike

Цитата:
мне нужно еще написать увелечение, уменьшение картинки

Имеется в виду изменение размеров или масштабирование?
По поводу попиксельных операций вот пример. Если его немного доработать, то его можно будет применять для выделения части изображения (в том числе и вырезания) для последующей обработки
Автор: May_Johnson
Дата сообщения: 29.05.2009 17:03

Цитата:
deadsy
Господа Гуру, подскажите,
как можно на C# снять скриншот с компонента наследника от Control
и загрузить его в компонент PictureBox не используя временных файлов (ну к примеру пользуясь MemoryStream'ами) ?



Почитай http://coder89.habrahabr.ru/blog/58806/
только надо будет самому вычислить координаты конрола, и вырезать его из скриншота
Автор: deadsy
Дата сообщения: 29.05.2009 21:24

Цитата:
Почитай http://coder89.habrahabr.ru/blog/58806/
только надо будет самому вычислить координаты конрола, и вырезать его из скриншота

такой пример я видел... его недостаток в том, что всё что поверх контролла тоже заскриншотится...
взять бы картинку с HDC контролла и в MemoryStream её
Автор: Omicron_Persey_8
Дата сообщения: 30.05.2009 12:58

Цитата:
Добавлено:
deadsy
Вот так

Это-то чем не устраивает? И сразу в объект Bitmap сохраняет. Рисуй где хочешь
Автор: 085
Дата сообщения: 31.05.2009 09:33
Чтобы в mssql server пароль мог быть и цифрой и текстом надо ставить sqlvariant ? Просто до того когда проект скомилится ещё долго и немогу сам глянуть
Автор: LuckyStrike
Дата сообщения: 05.06.2009 13:50
млин....я никак не соображу....помогите, нужен код для изменения цвета в картинки, как в фотошопе, например изменение RGB цветов, то есть больше допустим красного, меньше зелённого и т.п. и масштабирование картинки увеличить, уменьшать
Автор: Omicron_Persey_8
Дата сообщения: 05.06.2009 17:50
LuckyStrike

Цитата:
нужен код для изменения цвета в картинки, как в фотошопе, например изменение RGB цветов, то есть больше допустим красного, меньше зелённого и т.п. и масштабирование картинки увеличить, уменьшать

Это сколько угодно. Качаешь прогу Paint.NET, декомпилируешь Reflector'ом и выбираешь код, который тебе нужен.
А если серьезно, то почти все, что нужно есть здесь.
Вот мой вариант. Оно?
Автор: LuckyStrike
Дата сообщения: 05.06.2009 17:53
сори, а что за Reflector...первый раз слышу?) ^_^

Добавлено:
я тоже подумал насчет Paint.Net...мне как раз вроде него надо, тока немного попроще, тока код найти никак не могу, Omicron_Persey_8
если надешь, пришли ссылку пожалуйста

Добавлено:
я тоже подумал насчет Paint.Net...мне как раз вроде него надо, тока немного попроще, тока код найти никак не могу, Omicron_Persey_8
если надешь, пришли ссылку пожалуйста

Добавлено:
Omicron_Persey_8
у меня чет не получаеться твой файл скачать....через че качать?

Добавлено:
Omicron_Persey_8
А помоги вытащить код из paint.net масштабирования, я чет ищу ненайду((
Автор: Lihonosov
Дата сообщения: 05.06.2009 23:01
LuckyStrike
http://www.getpaint.net/download.html
Автор: V0lt
Дата сообщения: 06.06.2009 09:35
Задал вопрос уровня чайника и сам нашел ответ. Сначала хотел совсем удалить пост, но решил оставить...

Как в VS2008 создать свой шаблон под .NET 2.0?

Создаем новый проект Windows Forms Application. Сохраняем.
Заходим в настройки. Меняем "Target Framework" на ".NET Framework 2.0"
Появляются 4 предупреждения.
Щелкаем по 3-ей и 4-ой ошибке, попадаем в Solution->References и отсюда удаляем глюкнувшие System.Data.DataSetExten и System.Xml.Linq
Пытаемся откомпилировать (F6). Появяться 2 ошибки.
Щелкаем по ошибкам и удаляем "using System.Linq;" из Program.cs и Form1.cs
Проверям компиляцию (F6). Ушибок быть не должно.
Создаем шаблон (File->Export Template...)
На 1-ой странице выбираем Project template
На 2-ой заполняем имя шаблона без цифр в конце! И не забываем про описание.


Как VS2008 в удалить пользовательский шаблон?

Файлы шаблонов хранятся здесь:
c:\Documents and Settings\%USER%\My Documents\Visual Studio 2008\Templates\ProjectTemplates\
c:\Documents and Settings\%USER%\Application Data\Microsoft\VCSExpress\9.0\ProjectTemplatesCache\
Чтобы снести шаблон достаточно удалить соответствующий файл в первой папке. Но вторую папку тоже неплохо бы почистить.
Добавлено:
Тут лежит копия шаблона:
c:\Documents and Settings\%USER%\My Documents\Visual Studio 2008\My Exported Templates\
Тут может лежать резевная копия:
c:\Documents and Settings\%USER%\My Documents\Visual Studio 2008\Backup Files\
Автор: Omicron_Persey_8
Дата сообщения: 06.06.2009 10:23
LuckyStrike

Цитата:
сори, а что за Reflector...первый раз слышу

Это декомпилятор .NET сборок в исходный код. В свое время был бесплатный, но я мыслю, с кряком проблем не возникнет. Живет тут

Цитата:
А помоги вытащить код из paint.net масштабирования, я чет ищу ненайду((

Уважаемый, ты - садист. Попросил бы еще вытащить код масштабирования из Фотошопа
Автор: LuckyStrike
Дата сообщения: 06.06.2009 18:20
Omicron_Persey_8
Вот именно что не садист)) был бы садистом, просил бы про фотошоп))

Добавлено:
Omicron_Persey_8
Оооо...слушай, шеф, спасибо тебе за код)) я так понял ти брал матрицу цветов (зеленая) и менял зелённый цвет, а какая матрица красного и синего?)))

Добавлено:
и еще вопрос....вот код
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
//если в окне диалога был выбран файл
{
string s = openFileDialog1.FileName;
// в переменную s запоминаем название выбранного файла
StreamReader sr = new StreamReader(s);
//создаем новый объект StreamReader и передаем ему переменную s
richTextBox1.Text = sr.ReadToEnd();
//Читаем весь файл и записываем его в richTextBox1
sr.Close(); // Закрываем поток
}
}
здесь мы открываем файл и то что в файле записываеться в richtextbox, как сделать тоже самое с картинкой, что бы открывать и сразу он в picturebox открывалась или на panel?

Добавлено:
все...насчет последнего вопроса я разобрался)
Автор: V0lt
Дата сообщения: 06.06.2009 22:22
LuckyStrike

Цитата:
как сделать тоже самое с картинкой, что бы открывать и сразу он в picturebox открывалась или на panel?

как-то так

Код: pictureBox1.Image = Image.FromFile(@"c:\WINDOWS\Web\Wallpaper\Bliss.bmp");
Автор: Omicron_Persey_8
Дата сообщения: 07.06.2009 11:22
LuckyStrike

Цитата:
Оооо...слушай, шеф, спасибо тебе за код)) я так понял ти брал матрицу цветов (зеленая) и менял зелённый цвет, а какая матрица красного и синего?)))

А я почему-то думал, что игрался с интенсивностью красного канала... Ну ладно. Цветовая матрица имеет вид:
R 0 0 0 0
0 G 0 0 0
0 0 B 0 0
0 0 0 A 0
0 0 0 0 1
где R, G, B, A соответственно красный, зеленый, синий и альфа-каналы. Только здесь используется диапазон от 0 до 1, а не 0..255. Матрица цветов похожа на матрицу афинных преобразований, потому и функциональность схожая. Нарисованая мной матрица масштабирования для цвета означает руление интенсивностью определенного цветового канала. Чего делают матрицы поворота и перемещения - не разбирался, но наверно что-то полезное.
Автор: LuckyStrike
Дата сообщения: 07.06.2009 14:37
Omicron_Persey_8
Спасибо)
Автор: LuckyStrike
Дата сообщения: 08.06.2009 05:54
Добрый день!) А не подскажет ли кто-нибудь, как реализовать рисование как в Paint, то есть рисую прмоугольники, овалы и линии сам в pictureBox, нажмить мышкой и двигать и чтобы рисонук за мышкой тянулся.....как это сделать?) покажите плиз пару примерчиков)
Автор: Skyer1
Дата сообщения: 08.06.2009 11:33
Здравствуйте, уже писал здесь со своей темой, задачу я решил, но нужна ваша помощь в оптимизации кода. (программа полностью работает)
Создать класс Student с методом PassExam.
Метод должен "возвращать" оценку, полученную студентом на экзамене,
и булевый флаг - списывал студент или нет.

Затем, реализовать 5 наследников класса Student, каждый из которых
будет оверрайдить метод PassExam своей собственной реализацией.// Вот по этому немного незнаю, что можно сделать

Затем, создать случайным образом коллекцию из 20 студентов-наследников,
вызвать для каждого метод PassExam, получить статистику оценок
(вывести на консоль сколько каких оценок было получено)
и вывести на консоль процент списывавших студентов.


Код: namespace lab1u
{
class Program
{
static void Main(string[] args)
{
int a = 0,i,t;
const int n = 10;
int[] ex = new int[n]; //Экзамен
int[] sp = new int[n]; //%списывавших
Student[] arr = new Student[n];
Random r = new Random();
for (i = 0; i < n; i++) {
t = r.Next(5);
if (t == 0) { arr[i] = new St1(); }
if (t == 1) { arr[i] = new St2(); }
if (t == 2) { arr[i] = new St3(); }
if (t == 3) { arr[i] = new St4(); }
if (t == 4) { arr[i] = new St5(); }
}
for (i = 0; i < n; i++) {
ex[i] = arr[i].Examen(ref a);
sp[i] = a;
}
for (i = 0; i < n; i++)
{
System.Console.WriteLine("{0} Оценка {1}", ex[i], sp[i]);
}
int o2=0, o3=0, o4=0, o5=0,s=0;
for (i = 0; i < n; i++)
{
if (ex[i] == 2) o2 += 1;
if (ex[i] == 3) o3 += 1;
if (ex[i] == 4) o4 += 1;
if (ex[i] == 5) o5 += 1;
if(sp[i]==1)s+=1;
}
System.Console.WriteLine("{0} Студенты получили 2", o2);
System.Console.WriteLine("{0} Студенты получили 3", o3);
System.Console.WriteLine("{0} Студенты получили 4", o4);
System.Console.WriteLine("{0} Студенты получили 5", o5);
System.Console.WriteLine("{0}% Списало", s * 100 / n);
System.Console.Read();
}
}
abstract class Student
{
static public Random r = new Random();
static public Random n = new Random();
public abstract int Examen(ref int a);
}
class St1 : Student
{
public override int Examen(ref int a)
{
a = r.Next(2);
return n.Next(4) + 2;
}
public string name = "Student 1";
}
class St2 : Student
{
public override int Examen(ref int a)
{
a = r.Next(2);
return n.Next(4) + 2;
}
public string name = "Student 2";
}
class St3 : Student
{
public override int Examen(ref int a)
{
a = r.Next(2);
return n.Next(4) + 2;
}
public string name = "Student 3";
}
class St4 : Student
{
public override int Examen(ref int a)
{
a = r.Next(2);
return n.Next(4) + 2;
}
public string name = "Student 4";
}
class St5 : Student
{
public override int Examen(ref int a)
{
a = r.Next(2);
return n.Next(4) + 2;
}
public string name = "Student 5";
}
}
Автор: LuckyStrike
Дата сообщения: 08.06.2009 21:30
Люди, плиз..помогите...вот написал код для изменении картинки цветов RGB, которая находиться в pictureBox...но как-то не аккуратно работает((( просмотрите плиз
вот:
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;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
namespace PhotoLom
{
public partial class Form3 : Form
{

protected Image image;

public Form3()
{
InitializeComponent();
}

private void Form3_Load(object sender, EventArgs e)
{

}

private void button3_Click(object sender, EventArgs e)изменение зелёного
{
ImageAttributes ia = new ImageAttributes();
float[][] matrix = {
new float[] { (float)vScrollBar2.Value/255.0f, 0, 0, 0, 0 },
new float[] {0, 0, 0, 0, 0},
new float[] {0, 1, 0, 0, 0},
new float[] {0, 0, 0, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1} };
ColorMatrix cm = new ColorMatrix(matrix);


ia.SetColorMatrix(cm);

Bitmap bmp = new Bitmap(pictureBox1.Image);
Graphics g = Graphics.FromImage(bmp);

g.DrawImage(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, ia);

pictureBox1.Image = (Image)bmp;
}

private void button4_Click(object sender, EventArgs e)//изменение синего
{
ImageAttributes ia = new ImageAttributes();
float[][] matrix = {
new float[] { (float)vScrollBar3.Value/255.0f, 0, 0, 0, 0 },
new float[] {0, 0, 0, 0, 0},
new float[] {0, 0, 0, 0, 0},
new float[] {0, 0, 1, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1} };
ColorMatrix cm = new ColorMatrix(matrix);


ia.SetColorMatrix(cm);

Bitmap bmp = new Bitmap(pictureBox1.Image);
Graphics g = Graphics.FromImage(bmp);

g.DrawImage(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, ia);

pictureBox1.Image = (Image)bmp;
}

private void button2_Click_1(object sender, EventArgs e) //изменение красного
{
ImageAttributes ia = new ImageAttributes();
float[][] matrix = {
new float[] { (float)vScrollBar1.Value/255.0f, 0, 0, 0, 0 },
new float[] {1, 0, 0, 0, 0},
new float[] {0, 1, 0, 0, 0},
new float[] {1, 0, 0, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {1, 0, 0, 0, 1} };
ColorMatrix cm = new ColorMatrix(matrix);


ia.SetColorMatrix(cm);

Bitmap bmp = new Bitmap(pictureBox1.Image);
Graphics g = Graphics.FromImage(bmp);

g.DrawImage(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, bmp.Width, bmp.Height, GraphicsUnit.Pixel, ia);

pictureBox1.Image = (Image)bmp;
}

}

}
}
Автор: Omicron_Persey_8
Дата сообщения: 09.06.2009 08:02
LuckyStrike
Написал, да?
Ну, во-первых, матрица должна быть 5х5 (3 канала цвета + прозрачность + однородность (ищи в нете про однородные координаты)). Но может быть .NET'у на это плевать и лишние элементы он игнорирует. Во-вторых, матрица должна быть единичной, то есть все элементы главной диагонали должны быть равны 1, остальные 0.
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
В-третьих, я вроже как уже писал, что за интенсивность красного канала отвечает элемент с координатами [1,1], зеленого - с координатами [2,2], синего - [3,3]. Все остальные элементы должны быть как в приведенной выше матрице.
У тебя в коде все время меняется только красный канал и еще неизвестно что творится в остальной части матрицы. Должно быть что-то типа:

Код: float[][] redMatrix = {
new float[] { (float)vScrollBar1.Value/255.0f, 0, 0, 0, 0 },
new float[] {0, 1, 0, 0, 0},
new float[] {0, 0, 1, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1} };
float[][] greenMatrix = {
new float[] {1, 0, 0, 0, 0},
new float[] {1, (float)vScrollBar1.Value/255.0f, 0, 0, 0 },
new float[] {0, 0, 1, 0, 0},
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1} };
float[][] greenMatrix = {
new float[] {1, 0, 0, 0, 0},
new float[] {0, 1, 0, 0, 0},
new float[] {0, 0, (float)vScrollBar1.Value/255.0f, 0, 0 },
new float[] {0, 0, 0, 1, 0},
new float[] {0, 0, 0, 0, 1} };
Автор: Skyer1
Дата сообщения: 09.06.2009 10:21
Omicron_Persey_8
Не ну желательно бы, чтобы у каждого была своя реализация типа один всегда получает двойки, другой всегда списывает и тд.
Просто у нас препод к каждой "запятой" придирается.
Автор: muzzle
Дата сообщения: 09.06.2009 10:22
други, подскажите (или дайте ссылку) как выводить на экран и на принтер дополнительные символы типа альфа, знак градуса, степень и т.д.
в кодовой странице 1251 не получается. в проекте набор знаков использует юникод-кодировку, есть вариант использовать многобайтовую кодировку, но я в этом не шарю((
платформа Visual Studio 2008 Express, Windows Forms. язык C++
MSDN уже ночами снится, а решения не нашел - опыту маловато.
Автор: blaro
Дата сообщения: 09.06.2009 12:56
Скажите пожалуйста, как мне получить размер выбранного файла? Конечно же после того как я открыл FileDialog и выбрал файл.
Автор: niichavo
Дата сообщения: 09.06.2009 13:30
blaro

Код:
System.IO.FileInfo MyFileInfo = new System.IO.FileInfo(MyFileDialog.FileName);
int LengthOfFile = MyFileInfo.Length();
Автор: Omicron_Persey_8
Дата сообщения: 09.06.2009 14:33
Skyer1

Цитата:
Не ну желательно бы, чтобы у каждого была своя реализация типа один всегда получает двойки, другой всегда списывает и тд.
Просто у нас препод к каждой "запятой" придирается.

Ну тогда сохраняй информацию об оценке и признаке списывания не в отдельных массивах, а внутри Student'а:

Код: abstract class Student
{
protected int mark;
protected bool isWrite = false;

public int Mark
{
get
{
return this.mark;
}
set
{
this.mark = value;
}
}

public bool IsWrite
{
get
{
return this.isWrite;
}
set
{
this.isWrite = value;
}
}

protected virtual void PassExam(int mark, bool isWrite)
{
this.mark = mark;
this.isWrite = isWrite;
}
}

class St1 : Student // Вот этот всегда списывает
{
public void PassExam(int mark)
{
base.PassExam(mark,true);
}
}

class St2 : Student // Этот четверки получает
{
public void PassExam(bool isWrite)
{
base.PassExam(4, isWrite);
}
}
Автор: LuckyStrike
Дата сообщения: 09.06.2009 18:09
Omicron_Persey_8
плизз посмотри мой код по масштабированию...он как-то не очень, измени плизз
\\ увелечение
if (this.pictureBox1.Image == null)
{
MessageBox.Show("Выберите рисунок!","Выход",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}

else
{

Image myBitmap = pictureBox1.Image;
this.pictureBox1.Size = new Size(myBitmap.Width, myBitmap.Height);
Size nSize = new Size(pictureBox1.Image.Width + 100, pictureBox1.Image.Height + 100);
Image gdi = new Bitmap(pictureBox1.Image);
Graphics ZoomInGraphics = Graphics.FromImage(gdi);
ZoomInGraphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
ZoomInGraphics.DrawImage(pictureBox1.Image, new Rectangle(new Point(0, 0), nSize), new Rectangle(new Point(0, 0), pictureBox1.Image.Size), GraphicsUnit.Pixel);
ZoomInGraphics.Dispose();
pictureBox1.Image = gdi;
pictureBox1.Size = gdi.Size;
}

\\уменьшение
if (this.pictureBox1.Image == null)
{
MessageBox.Show("Выберите рисунок!","Выход",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}

else
{
Image myBitmap = pictureBox1.Image;
this.pictureBox1.Size = new Size(myBitmap.Width, myBitmap.Height);
Size nSize = new Size(pictureBox1.Image.Width - 110, pictureBox1.Image.Height - 110);
Image gdi = new Bitmap(pictureBox1.Image);
Graphics ZoomInGraphics = Graphics.FromImage(gdi);
ZoomInGraphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
ZoomInGraphics.DrawImage(pictureBox1.Image, new Rectangle(new Point(0, 0), nSize), new Rectangle(new Point(0, 0), pictureBox1.Image.Size), GraphicsUnit.Pixel);
ZoomInGraphics.Dispose();
pictureBox1.Image = gdi;
pictureBox1.Size = gdi.Size;
}
Автор: Omicron_Persey_8
Дата сообщения: 09.06.2009 19:54
LuckyStrike

Цитата:
он как-то не очень

Слушай, что именно "не очень"? Работает медленно или еще чего? И убирай уже код в теги code /code, а то читать неудобно.
Автор: LuckyStrike
Дата сообщения: 09.06.2009 20:38
когда уменьшаеться, то он становиться мельче, но стандартное изображение остаеться сзади, и выглядит не красиво, а когда увеличиваеться не появляеться скролл((
Автор: VasiliySuhomlin
Дата сообщения: 09.06.2009 21:23
Good_man

Цитата:
Готов ответить на вопросы.

Пишу на С#. Использую элементы, в основном, от NetAdvantage. B grid-e нельзя объединение ячеек по горизонтали (по строке). Как можно найти решение показа всего текста, не вмешающегося в ячейку, с перекрытием правых ячеек (как в Excell-e)?
Это важно при печати grid-a.
Автор: BlackVetal
Дата сообщения: 10.06.2009 06:26
VasiliySuhomlin
Что-то ты не очень точно выразился - при чем тут grid и печать?
Grid используют для редактирование данных. А чтобы вывести на печать - самый лучший вариант это использование отчета, к примеру, Cristal Report. А в отчете можно настроить вывод данных в ячейке (например, автоматическое увеличение высоты ячейки)
Еще из вариантов - можно создать шаблон в excell и выводить туда твои данные (но для этого на мой взгляд лучше использовать VB).
Автор: Omicron_Persey_8
Дата сообщения: 10.06.2009 07:14
LuckyStrike

Цитата:
когда уменьшаеться, то он становиться мельче, но стандартное изображение остаеться сзади, и выглядит не красиво, а когда увеличиваеться не появляеться скролл((

Ну, скролл появляться не будет, потому как PictureBox только изображение рисует (с тем или иным масштабированием).

Добавлено:
А ты бы битмап, в который уменьшенную картинку будешь выводить не делал на основе исходного, он бы и предыдущее изображение и не рисовал. Лучше как-то так:

Код: Image myBitmap = pictureBox1.Image;
this.pictureBox1.Size = new Size(myBitmap.Width, myBitmap.Height);
Size nSize = new Size(pictureBox1.Image.Width - 110, pictureBox1.Image.Height - 110);
Image gdi = new Bitmap(nSize.Width, nSize.Height); // создаем пустой битмап
Graphics ZoomInGraphics = Graphics.FromImage(gdi);
ZoomInGraphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; // Работает помедленнее, зато качество лучше
ZoomInGraphics.DrawImage(pictureBox1.Image, new Rectangle(new Point(0, 0), nSize), new Rectangle(new Point(0, 0), pictureBox1.Image.Size), GraphicsUnit.Pixel);
ZoomInGraphics.Dispose();
pictureBox1.Image = gdi;
pictureBox1.Size = gdi.Size;

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102

Предыдущая тема: Как удалить/добавить/отключить/включить устройство?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.