Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для alexey31415
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632

Рисование линейки

20.06.2012, 11:16. Показов 1306. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть функция,рисующая линейку сверху и слева,мне всё понятно в работе функции,кроме того,что она рисует линейку по длине почти всего окна,хотя мы указываем протяжённость равную логическому дюйму,а это далеко не всё окно
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
void DrawRuler(HDC hdc, RECT *prc)
{
    static int iRuleSize[16] = {360, 72, 144, 72, 216, 72, 144, 72,
                                288, 72, 144, 72, 216, 72, 144, 72};
 
    int i, j;
    POINT ptClient;
 
    SaveDC(hdc);
 
    SetMapMode(hdc, MM_ANISOTROPIC);
    SetWindowExtEx(hdc, 1440, 1440, NULL);
    SetViewportExtEx(hdc, GetDeviceCaps(hdc, LOGPIXELSX),
                    GetDeviceCaps(hdc, LOGPIXELSY), NULL);
 
 
    SetWindowOrgEx(hdc, -720, -720, NULL);
 
    ptClient.x = prc->right;
    ptClient.y = prc->bottom;
    DPtoLP(hdc, &ptClient, 1);
    ptClient.x -= 360;
 
    MoveToEx(hdc, 0, -360, NULL);
    LineTo(hdc, ptClient.x, -360);
    MoveToEx(hdc, -360, 0, NULL);
    LineTo(hdc, -360, ptClient.y);
 
    for(i = 0, j = 0;i <= ptClient.x;i += 1440/16, j++)
    {
        MoveToEx(hdc, i, -360, NULL);
        LineTo(hdc, i, -360 - iRuleSize[j%16]);
    }
 
    for(i = 0,j = 0; i <= ptClient.y;i += 1440/16, j++)
    {
        MoveToEx(hdc, -360, i, NULL);
        LineTo(hdc, -360 - iRuleSize[j%16],i);
    }
 
    RestoreDC(hdc, -1);
 
}
Миниатюры
Рисование линейки  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.06.2012, 11:16
Ответы с готовыми решениями:

Создание логарифмической линейки
Здравствуйте, собственно появилась идея создать несколько моделей раритетных способов вычисления, хочу выложить к себе на сайт, может кто...

Создание линейки прокрутки
Здраствуйте :) Написал прогу но так получилось что окно слишком большое и для меньших экранов нужно изменять его размеры.У меня главное...

Про линейки и температуру
Задача довольно-таки легкая... Я решал и сложнее намного, но в этой упорно не хочет получаться ответ. Помогите пожалуйста, условие ниже: ...

5
 Аватар для alexey31415
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
24.06.2012, 21:19  [ТС]
Неужели никто не знает?
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
24.06.2012, 21:43
В чём вопрос. Тебе надо не на всё окно, так передавай соответсвующие размеры линейки вместе с RECT.
0
 Аватар для alexey31415
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
25.06.2012, 09:44  [ТС]
Вопрос в том,почему рисует вдоль всего окна?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
25.06.2012, 14:39
Цитата Сообщение от alexey31415 Посмотреть сообщение
хотя мы указываем протяжённость равную логическому дюйму
Где ты это указываешь?
0
 Аватар для alexey31415
60 / 60 / 7
Регистрация: 16.05.2010
Сообщений: 632
25.06.2012, 17:56  [ТС]
Цитата Сообщение от alexey31415 Посмотреть сообщение
SetViewportExtEx(hdc, GetDeviceCaps(hdc, LOGPIXELSX),
* * * * * * * * * * GetDeviceCaps(hdc, LOGPIXELSY), NULL);
вот здесь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.06.2012, 17:56
Помогаю со студенческими работами здесь

Всплывающие линейки word2003
Приветствую. Подскажите... сейчас у меня линейки скрываются, при наведении мышью на серую полоску вверху листа, линейки появляются, как...

Линейки прокрутки в ListView
С помощью какого свойства в ListView (версия 6) добавляются линейки прокрутки?

Создание масштабируемой линейки
подскажите как создать линейку в builder, чтобы она могла быть масштабируемой.

Из линейки LENOVO диагональю <13
Приветствую. Помогите выбрать ноут из Lenovo. Требований основных не много: - экран, меньше или ровно 13 дюймов; - обязательно наличие...

Код для светодиодной линейки.
Хочу написать программу (IAR+STM8l) которая в зависимости от принятого числа зажигает соответствующее количество сегментов у светодиодной...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка 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 и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru