Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Вениамин Шепард
24 / 10 / 5
Регистрация: 11.01.2014
Сообщений: 85
1

Как с помощью функции setpixel нарисовать прямую

09.04.2015, 21:03. Просмотров 726. Ответов 5
Метки нет (Все метки)

1. Допустим, у нас есть есть одна команда
C++
1
setPixel(x, y);
, с помощью неё надо нарисовать линию от одной точки до другой. Если вы знаете ресурс, где есть больше на эту тему (рисование окружности, овала и т.д.), то отправьте ссылку.

2. Как сделать в классе функцию, которую можно поменять в любой момент выполнения программы?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2015, 21:03
Ответы с готовыми решениями:

Как с помощью классов нарисовать очки?
Как с помощью классов нарисовать очки? Помогите пожалуйста

Как с помощью Bitblt нарисовать линию из '*'?
как с помощью Bitblt нарисовать линию из таких символов *?

Как нарисовать график функции?
Edit1->Text == "x*x"; int x; Как нарисовать график функции int y =...

Как нарисовать график функции?
Привет всем. Учусь программированию всего пол года. И тут мне дают задание -...

Как нарисовать график функции ?
#include "stdafx.h" #include <iostream> #include <conio.h> #include...

5
magirus
09.04.2015, 21:15
  #2

Не по теме:

просто зашел по просьбе ТС

0
zss
Модератор
Эксперт С++
7189 / 6683 / 4231
Регистрация: 18.12.2011
Сообщений: 17,639
Завершенные тесты: 1
09.04.2015, 21:26 3
Лучший ответ Сообщение было отмечено Вениамин Шепард как решение

Решение

Надо использовать алгоритм Брезенхема.
Вот нашел в закромах
(адаптируйте под нужную среду)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
void DrawtLine(int x1,int y1,int x2,int y2,COLORREF Color,COLORREF WhiteColor)
{
    int x, y, xend, yend, s, dx, dy, d, inc1, inc2;
    dx = abs(x2-x1); 
    dy = abs(y2-y1);
    if (dx > dy) 
    {
        inc1 = 2*dy; 
        inc2 = 2*(dy - dx); 
        d = 2*dy - dx;
        if (x1 < x2)
        {
            x = x1; y = y1; xend = x2;
            if (y1 < y2) s = 1;
            else s = -1;
        }else
        {
            x = x2; 
            y = y2; 
            xend = x1;
            if (y1 > y2)s = 1;
            else s = -1;
        }
        SetPixel(x,y,Color);
        while (x < xend)
        {
            x++;
            if (d > 0)
            {
                y+=s;
                d+=inc2;
            }
            else
                d+=inc1;
            SetPixel(x,y,Color);
        }
    }else
    {
        inc1 = 2*dx; 
        inc2 = 2*(dx - dy); 
        d = 2*dx - dy;
        if (y1 < y2)
        {
            y = y1; x = x1; yend = y2;
            if (x1 < x2) s = 1;
            else s = -1;
        }else
        {
            y = y2; 
            x = x2; 
            yend = y1;
            if (x1 > x2)s = 1;
            else s = -1;
        }
        SetPixel(x,y,WhiteColor);
        while (y < yend)
        {
            y++;
            if (d > 0)
            {
                x+=s;
                d+=inc2;
            }
            else
                d+=inc1;
            SetPixel(x,y,WhiteColor);
        }
    }
 
}
1
Croessmah
09.04.2015, 21:50
  #4

Не по теме:

Цитата Сообщение от magirus Посмотреть сообщение
просто зашел по просьбе ТС
Ваша добродетель даже соизволил написать? :D

0
Вениамин Шепард
24 / 10 / 5
Регистрация: 11.01.2014
Сообщений: 85
09.04.2015, 21:55  [ТС] 5
А на второй вопрос кто-нибудь ответ знает?
0
Croessmah
++Ͻ
14626 / 8377 / 1580
Регистрация: 27.09.2012
Сообщений: 20,579
Записей в блоге: 2
Завершенные тесты: 1
09.04.2015, 21:56 6
Цитата Сообщение от Вениамин Шепард Посмотреть сообщение
Как сделать в классе функцию, которую можно поменять в любой момент выполнения программы?
Указатель на функцию? Паттерн команда? Смотря что Вы имеете ввиду.
Рефлексии в C++ нет, так что саму функцию поменять не получится
0
09.04.2015, 21:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2015, 21:56

Как нарисовать график функции в С++?
в обычной IDE типа Visual Studio. Через WinApi или какие-то графические...

Вычислить значение y с помощью стандартной функции и с помощью ряда с точностью 0,0001
Ребята выручайте! 1. Дано действительное число x. Вычислить значение y с...

Как вывести весь массив с помощью функции?
сразу пишу искал на форуме но нужного не смог найти, возможно я криво искал...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru