Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
6 / 6 / 0
Регистрация: 16.04.2009
Сообщений: 32
1

Сетка 10*10

26.11.2009, 13:01. Показов 4236. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здраствуйте уважаемые програмисты.Помогите пожалуйста.Как нарисовать ровную сетку 10*10 ? Видел пример осцыографа в интернете но,что то так и не понял...если можно можете объяснить.Буду благоарен.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2009, 13:01
Ответы с готовыми решениями:

Сетка
Попрошу не ржать над темой, но. 1. UDP надо ставить в системе? 2. Как непосредственно работать с...

Вертикальная сетка
Можно ли использовать цикл чтоб не писать по 20 раз одно и то же, дайте пример плз hdc =...

Сетка из квадратов
Вобщем задача такая: нужно сделать сетку из n*m квадратов, некоторые из них будут, допустим, белого...

Wi-Fi сетка
Купил себе ноутбук. Там есть Wi-Fi. Если купить Сетевую wi-fi карту на комп, то можно ли будет без...

7
19 / 14 / 2
Регистрация: 08.11.2009
Сообщений: 79
26.11.2009, 14:54 2
"Нарисовать" где? карандашом на стене? 10 на 10 чего? Сформулируйте нормально вопрос и будет Вам счастье
0
6 / 6 / 0
Регистрация: 16.04.2009
Сообщений: 32
26.11.2009, 17:12  [ТС] 3
В основном окне.10*10 пикселев.Строю график.Пишу на WinAPI C++ хотел нарисовать сетку координат
0
Эксперт С++
2255 / 770 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
26.11.2009, 18:21 4
for,MoveTo,LineTo
0
6 / 6 / 0
Регистрация: 16.04.2009
Сообщений: 32
26.11.2009, 18:44  [ТС] 5
А не могли бы вы привести пример...если не сложно..
0
1 / 1 / 0
Регистрация: 23.11.2009
Сообщений: 6
01.12.2009, 19:08 6
не отвечают, видно, сложно.
0
6 / 6 / 0
Регистрация: 16.04.2009
Сообщений: 32
01.12.2009, 19:10  [ТС] 7
Точно...(
0
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
03.12.2009, 21:12 8
Лучший ответ Сообщение было отмечено как решение

Решение

слишком общий вопрос. конкретнее- напишите на radiohobbyt@mail.ru кину пример, только начатый.
а вообще- создаете класс окна, в обработчике WM_PAINT пишете всю прорисовку. можно рисовать и на других окнах, но лучше все-таки свой класс создать.

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#include <windows.h>
#include <math.h>
#include "globals.h"
 
extern HINSTANCE hInstance;
 
#define OscGraphWndClassName "OscGraphWndClass"
 
#define ClBackGraphColor RGB(0,0,0)         //цвет фона
#define ClGraphColor RGB(0,255,27)          //цвет самого графика
#define ClGraphHarmColor RGB(255,28,204)    //цвет
#define ClLinesColor RGB(64, 64, 0)          //цвет линий
#define ClNullLinesColor RGB(0, 128, 0)
#define ClNullLineColor RGB(128,128,128)    //
#define ClGraphTextColor RGB(220,220,220)   //цвет текста
#define ClGraphMaxColor RGB(255, 50, 50)
 
#define UiGraphOtstup 10
#define UiMinHeight 60
#define UiMinWidth 60
 
#define UiOscGraphDataNumber 4096
#define UiOscGraphDataStringNumber 5
#define UiOscGraphDataStringSize 20
 
struct OscGraphData
{
    float fData[UiOscGraphDataNumber];
    bool bShowText;
    char cString[UiOscGraphDataStringNumber][UiOscGraphDataStringSize];
};
 
OscGraphData ogdTest;
 
void ShowGraph(HWND hwndGraph, OscGraphData* podpToShow)
{
 
    HDC hdcMemDC;
    HDC hdcWndDC;
    hdcWndDC=GetDC(hwndGraph);
    hdcMemDC = CreateCompatibleDC(hdcWndDC);
    HBITMAP hbmBitmap;
    BITMAP bmBitmap;
    RECT DrawRect;
    GetClientRect(hwndGraph, &DrawRect);
    unsigned int uiXLineStep=(DrawRect.right-DrawRect.left-2*UiGraphOtstup)/10;
    unsigned int uiYLineStep=(DrawRect.bottom-DrawRect.top-2*UiGraphOtstup)/8;
    hbmBitmap=CreateCompatibleBitmap(hdcWndDC, DrawRect.right-DrawRect.left, DrawRect.bottom-DrawRect.top);
    SelectObject(hdcMemDC, hbmBitmap);
    HBRUSH hBrush;
    HPEN hPen;
    //фон
    hBrush = CreateSolidBrush(ClBackGraphColor);
    hPen=CreatePen(PS_SOLID, 1, ClBackGraphColor);
    FillRect(hdcMemDC, &DrawRect, hBrush);
    DeleteObject(hBrush);
    DeleteObject(hPen);
    //оси X
    for(unsigned int i=0; i<=8; i++)
        {
            for(unsigned j=UiGraphOtstup; j<UiGraphOtstup+uiXLineStep*10; j++)
            if(j%2)
                SetPixel(hdcMemDC, j, UiGraphOtstup+i*uiYLineStep, ClLinesColor);
        }
    //оси Y
    for(unsigned int i=0; i<=10; i++)
        {
            for(unsigned j=UiGraphOtstup; j<UiGraphOtstup+uiYLineStep*8; j++)
            if(j%2)
                SetPixel(hdcMemDC, UiGraphOtstup+i*uiXLineStep, j, ClLinesColor);
        }
    //нулевая ось X
    for(unsigned j=UiGraphOtstup; j<UiGraphOtstup+uiXLineStep*10; j++)
        if((j%2))
            SetPixel(hdcMemDC, j, UiGraphOtstup+4*uiYLineStep, ClNullLinesColor);
    //нулевая ось Y
    for(unsigned j=UiGraphOtstup; j<UiGraphOtstup+uiYLineStep*8; j++)
        if((j%2))
            SetPixel(hdcMemDC, UiGraphOtstup+5*uiXLineStep, j, ClNullLinesColor);
 
    //собственно сам график
    float fXPerDot=(float)(DrawRect.right-DrawRect.left-2*UiGraphOtstup)/float)UiOscGraphDataNumber;//ДОПИСАТЬ
    //float fYPerDot=(float)(DrawRect.bottom-DrawRect.top)/(float)UiOscGraphDataNumber;
    unsigned int uiYNull=UiGraphOtstup+4*uiYLineStep;
    for(unsigned int i=0; i<UiOscGraphDataNumber; i++)
        {
        SetPixel(hdcMemDC, UiGraphOtstup+(float)i*fXPerDot, uiYNull-ogdTest.fData[i], ClGraphColor);
        }
    DeleteObject(hBrush);
   DeleteObject(hPen);
    //вывод текста
    //if(podpToShow->bShowText)
    for(unsigned int i=0; i<UiOscGraphDataStringNumber; i++)
        {
        SetTextAlign(hdcMemDC, TA_BASELINE|TA_RIGHT);
        SetTextColor(hdcMemDC, ClGraphTextColor);
        SetBkMode(hdcMemDC, TRANSPARENT);
        TextOut(hdcMemDC, DrawRect.right- UiGraphOtstup, 2.5*UiGraphOtstup+20*i, "порно правит миром", 19) ;
        }
 
   BitBlt(hdcWndDC, DrawRect.left, DrawRect.top, DrawRect.right-DrawRect.left,DrawRect.bottom-DrawRect.top, hdcMemDC, 0, 0, SRCCOPY);
   DeleteDC(hdcMemDC);
   DeleteDC(hdcWndDC);
   DeleteObject(hbmBitmap);
   DeleteObject(hBrush);
   DeleteObject(hPen);
    return;
}
 
 
LRESULT CALLBACK OscGraphWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_CREATE:
            {
            //хоть какие-то данные
            for(unsigned int i=0; i<4096; i++)
                ogdTest.fData[i]=sin(i/30.0)*100;
            return 0;
            }
        case WM_PAINT:
            {
            PAINTSTRUCT ps;
            HDC hdc=BeginPaint(hwnd, &ps);
            ShowGraph(hwnd, &ogdTest);
            EndPaint(hwnd, &ps);
            return 0;
            }
        case WM_SIZE:
            {
            InvalidateRect(hwnd, NULL, NULL);
            return 0;
            }
        case WM_GETMINMAXINFO:
            {
        MINMAXINFO FAR *lpmmi;
    lpmmi = (MINMAXINFO FAR *)lParam;
    lpmmi->ptMinTrackSize.y = UiMinHeight;
            lpmmi->ptMinTrackSize.x = UiMinWidth;
            return 0;
            }
        case WM_DESTROY:
            PostQuitMessage (0);
    }
    return DefWindowProc (hwnd, message, wParam, lParam);;
}
 
 
int RegisterOscGraphWndClass(void)
{
    WNDCLASS wincl;        /* Data structure for the windowclass */
    wincl.hInstance = hInstance;
    wincl.lpszClassName = OscGraphWndClassName;
    wincl.lpfnWndProc = OscGraphWndProc;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS|CS_OWNDC       ;                 /* Catch double-clicks */
    wincl.hIcon = NULL;//LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    if (!RegisterClass (&wincl))
        return 0;
    return 1;
}
приверно так. все это так...заготовки. но суть понятна. и потом где надо
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 if(!RegisterOscGraphWndClass())
        return 0;
    HWND hwndGraph=
    CreateWindow(
            OscGraphWndClassName,
            "Сигнал",
            WS_OVERLAPPEDWINDOW|WS_VISIBLE,
           10,                 /* The programs width */
           10,                 /* and height in pixels */
           400,        /* The window is a child-window to desktop */
           300,                /* No menu */
           NULL,
           NULL,
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );
создаем окно.
3
03.12.2009, 21:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2009, 21:12
Помогаю со студенческими работами здесь

Wi-Fi сетка
Вообщем нужно как-то подрубить 8 компов (ноуты с Wi-Fi), в одну сетку, чтобы на одном запустить...

Сетка
Здравствуйте. Подскажите пожалуйста как сделать сетку в которой будет писатся разная информация. ...

Сетка
Здравствуйте! Прошу помощи в таком вопросе: каким образом можно реализовать генерацию и последующие...

Сетка на QT
Доброго дня. Решил я для себя заняться и поработать в Qt. И вот встал вопрос. Мне получается нужно...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru