Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Рисование одинарных точек


Автор: ZA3A24 15.4.2009, 11:19
Пытаюсь средствами C# нарисовать одну-единственную точку на форму (или в PictureBox'е)

Будь это, Дельфи сделал бы так:

Код

Form1.Canvas.Pixels[100,100] = clRed;


Но поскольку Graphics в C# устроен совершенно иначе, чем канва, этот номер не проходит. 

В MSDN нашел рисование средствами WINAPI на Си:
Код

HWND hwnd = GetDesktopWindow();
HDC  hdc  = GetWindowDC(hwnd);
COLORREF clr = RGB(255, 0, 0);
SetPixel(hdc, 100,100, clr);


Но как-то жутко применять сие в аккуратный C# код.....

В описании Graphics не нашел альтернативы.... Что делать?  smile 

Автор: DVariuS 15.4.2009, 12:12
Код

protected override void OnPaint(PaintEventArgs e) 

       e.Graphics.FillRectangle(Brushes.Black, 20, 20, 1, 1); 
}

Автор: ZA3A24 15.4.2009, 12:23
К сожалению, это не пиксель, а квадрат..... Нехороший способ....

Автор: DVariuS 15.4.2009, 12:38
В .NET отсутствуют специальные способы для рисования точек. Отдельные пиксели можно изменять только в Bitamp, используя метод SetPixel.


Автор: ZA3A24 15.4.2009, 12:42
Жалко........ Хотя можно тогда наверное, рисовать на битмапе, а потом выводить его целиком на форму....

Что еще хуже....

Автор: DVariuS 15.4.2009, 12:47
Все зависит от задачи: чтобы нарисовать на форме пару точек, подойдет предложенный мной способ, а если необходимо вывести много пикселей, полученных путем сложных расчетов или преобразований, то лучшим способоом является рисование на битмапе и последующий вывод на форму.

Автор: ZA3A24 15.4.2009, 13:02
Спасибо, приму к сведению smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)