Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
Level 2
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
.NET 4.x

Работа с изображением (SetPixel)

23.08.2011, 18:52. Показов 2397. Ответов 6

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
for (int i = 0; i < bm.VerticalResolution * 4.6875; i++)
            {
                Random rnd = new Random();
                Color line = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256));
                for (int j = 0; j < bm.HorizontalResolution * 4.6875; j++)
                    bm.SetPixel(j, i, line);
            }
            this.BackgroundImage = bm;
Здраствуйте. Есть код, который по идее должен рисовать линии толщиной в 1 pxl. Каждая новая полоска должна быть нового цвета. Код работает, да вот только не так как хотелось... Вот скрин:



Я может чего то не понимаю, но так не должно быть. Линии слишком широкие... Причём когда я пошагово нарисовал первую линию, то она была нужной ширины. В чём я не прав? Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.08.2011, 18:52
Ответы с готовыми решениями:

Работа с изображением
Помогите создать игру)) надо что бы по форме снизу бегал &quot;самолет&quot;, с помошью клавиш влево и вправо, а по нажатию клавиши пробел он...

SetPixel vs LockBits
всем привет,народ! редактирую картинку с помощью двух вариантов SetPixel и через LockBits.Изображение 24битное.bp некая нормированная...

Аналоги для GetPixel/SetPixel
Есть такой код: var bmp = pictureBox1.Image as Bitmap; for (int i = 0; i &lt; bmp.Width; i++) { ...

6
 Аватар для umnick_kh
311 / 249 / 44
Регистрация: 06.12.2010
Сообщений: 527
23.08.2011, 19:07
Чему равна bm.HorizontalResolution?
0
Level 2
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
23.08.2011, 19:10  [ТС]
Цитата Сообщение от umnick_kh Посмотреть сообщение
Чему равна bm.HorizontalResolution?
Ну это впринцепе не важно... Это можно заменить на ширину изображения (в моём случае bm.HorizontalResolution = 96.0 * 4.6875 = 450). Размеры изображения: 450 X 450.
0
 Аватар для umnick_kh
311 / 249 / 44
Регистрация: 06.12.2010
Сообщений: 527
23.08.2011, 19:36
Вынесите рандом из цикла.

C#
1
2
3
4
5
6
7
8
   Random rnd = new Random();
for (int i = 0; i < bm.VerticalResolution * 4.6875; i++)
            {
                Color line = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256));
                for (int j = 0; j < bm.HorizontalResolution * 4.6875; j++)
                    bm.SetPixel(j, i, line);
            }
            this.BackgroundImage = bm
1
Level 2
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
23.08.2011, 19:43  [ТС]
Цитата Сообщение от umnick_kh Посмотреть сообщение
Вынесите рандом из цикла.

C#
1
2
3
4
5
6
7
8
   Random rnd = new Random();
for (int i = 0; i < bm.VerticalResolution * 4.6875; i++)
            {
                Color line = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256));
                for (int j = 0; j < bm.HorizontalResolution * 4.6875; j++)
                    bm.SetPixel(j, i, line);
            }
            this.BackgroundImage = bm
Не понял как это влияет на результат, но в любом случае спасибо!
0
 Аватар для umnick_kh
311 / 249 / 44
Регистрация: 06.12.2010
Сообщений: 527
23.08.2011, 19:53
Вот, нашел достойный ответ на просторах тырнета, т.к сам понятно объяснить не смогу)

Потому что генератор генерирует не абсолютно случайные числа, а так называемые «псевдослучайные», то есть последовательность чисел, каждое из которых определенным образом зависит от предыдущих), а самое первое задается (в данном случае) в конструкторе класса Random . Таким образом, если создать несколько генераторов с одним и тем же параметром, они будут выдавать одинаковые последовательности. Так как вы вызываете конструктор без параметров, то в качестве начального значения используется текущее время, которое не успевает измениться между последовательными вызовами. И после этого от каждой последовательности вы берете первое число, что и дает вам все одинаковые числа. Правильным вариантом в этом случае будет не создавать каждый раз новый генератор случайных чисел, а использовать один экземпляр для всей последовательности.
Еще можно делать так:

C#
1
2
3
4
5
6
7
8
for (int i = 0; i < bm.VerticalResolution * 4.6875; i++)
            {
                Random rnd = new Random(DateTime.Now.Millisecond);
                Color line = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256));
                for (int j = 0; j < bm.HorizontalResolution * 4.6875; j++)
                    bm.SetPixel(j, i, line);
            }
            this.BackgroundImage = bm;
1
Level 2
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
23.08.2011, 20:07  [ТС]
Вообще изначально я так делал, но мне это не помогло

C#
1
2
Random r = new Random();
Random rnd = new Random(r.Next(666, 9999));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.08.2011, 20:07
Помогаю со студенческими работами здесь

Преобразование цветного изображения, не используя GetPixel и SetPixel
Здравствуйте, у меня есть программа, которая обрабатывает черно-белое изображение. Мне нужно ее усовершенствовать,чтобы она обрабатывала...

Работа с изображением
Всем доброго времени суток. Пишу &quot;пятнашки&quot; или же &quot;собери картинку&quot; остановился на том, что на форме один Image и в нем будет игровое...

SetPixel в WPF
Здравствуйте! Подскажите, есть ли метод для отрисовки одного пикселя, например в канве, аналогичный SetPixel в System.Drawing? И можно ли...

Методы GetPixel\SetPixel BMP и стеганография
Подскажите, мне необходимо реализовать метод стеганографии &quot;&quot;замена палитры&quot;, следовательно нужно поместить как то свой текст в...

Работа с изображением
Добрый день. Прошу помощи. Почему-то не срабатывает метод setpixel. Ниже код: Bitmap img = new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru