Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как нарисовать точку?

31K
23 октября 2009 года
annufriy
18 / / 15.06.2008
 
Код:
Graphics^ g = e->Graphics;
g->DrawEllipse(greenPen,10,10,1,1);      // рисует "точку" в два пикселя
g->DrawLine(1,1,1,1); //вообще ничего не рисует
g->DrawLine(1,1,2,1);//рисует два пикселя


подскажите, пожалуйста, как нарисовать точку в один пиксель?
5
23 октября 2009 года
hardcase
4.5K / / 09.08.2005
SetPixel
31K
23 октября 2009 года
annufriy
18 / / 15.06.2008
спасибо, помогло :)

получилось вот так:

Код:
private: System::Void panel1_Paint(System::Object^  sender,
 System::Windows::Forms::PaintEventArgs^  e) {
    Bitmap^ myBitmap = gcnew Bitmap(600,200);
    Pen^ redPen = gcnew Pen(Color::Red);
    System::Drawing::Font^ drawFont =
gcnew System::Drawing::Font( "Arial",10 );
    SolidBrush^ drawBrush = gcnew SolidBrush(Color::Yellow);
    e->Graphics->Clear(Color::Black);

    //координатные оси
    redPen->Width = 1;
    e->Graphics->DrawLine(redPen, 0, 100, 600, 100);
    e->Graphics->DrawLine(redPen, 10, 0, 10, 200);
    //!координатные оси
   
    //график
    for(int i=0; i<1000; i++) {
        int g=(int)(30*sin(i*3.1415926536/180*3)); 
        myBitmap->SetPixel(10+i/3,100+g,Color::Green); 
    }
        e->Graphics->DrawImage( myBitmap, 0, 0, 600, 200 );
    //!график

    //подписи
    for(int i=0; i<=10; i++){
        PointF drawPoint = PointF(i*40,100);
        e->Graphics->DrawString((i*40).ToString(),
drawFont,drawBrush,drawPoint);
        }
    //!подписи
             }


посмотрите, опытным глазом, есть какие-нибудь "несуразности" :)?
5
24 октября 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: annufriy
посмотрите, опытным глазом, есть какие-нибудь "несуразности" :)?


График обычно рисуется "ломаной". Т.е. отрезками от i-ой точки до i+1ой точки. Я бы создал экземпляр GraphicsPath и добавлял в него эти отрезки (конечно, используя вещественные числа), затем выводил методом Graphics.FillPath.
Этот способ позволит применять аффинные преобразования самого Graphics-а: повороты координат, масштабирование, или их комбинации.


З.Ы. MC++ совершенно для иных задач нужен - начните использовать C#, если вы еще не ориентируетесь в классах .NET.

31K
24 октября 2009 года
annufriy
18 / / 15.06.2008
 
Код:
private: System::Void panel1_Paint(System::Object^  sender,
System::Windows::Forms::PaintEventArgs^  e) {
...
}


это обработчик события Paint панели.
если я хочу вызвать его вручную (по нажатию кнопки), как сформировать второй параметр System::Windows::Forms::PaintEventArgs^ e?
5
24 октября 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: annufriy
 
Код:
private: System::Void panel1_Paint(System::Object^  sender,
System::Windows::Forms::PaintEventArgs^  e) {
...
}
это обработчик события Paint панели.
если я хочу вызвать его вручную (по нажатию кнопки), как сформировать второй параметр System::Windows::Forms::PaintEventArgs^ e?

panel1->Invalidate(true);

31K
24 октября 2009 года
annufriy
18 / / 15.06.2008
ок. спасибо, работает :).
а как все-таки сформировать структуру e? хотелось бы получить доступ к соответствующему Graphics извне. это возможно?
5
24 октября 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: annufriy
ок. спасибо, работает :).
а как все-таки сформировать структуру e? хотелось бы получить доступ к соответствующему Graphics извне. это возможно?


 
Код:
Graphics^ gfx = panel1->CreateGraphics();
try {
    // чтото делаем
} finally {
   gfx->Dispose();
}

Вы в конце-концов удосужитесь открыть документацию или нет?
31K
25 октября 2009 года
annufriy
18 / / 15.06.2008
я ее и не закрываю.
не нервничайте, учителЪ, вы еще будете мной гордиться :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог