Как правильно юзать SetMapMode?

Тема в разделе "WASM.ASSEMBLER", создана пользователем Pinkbyte, 15 окт 2006.

  1. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Дело такое - мне нужно выводить сложное изображение - я создаю контекст устройства с помощью CreateCompatibleDC, потом создаю Compatible Bitmap в нем и заливаю все это дефолтным цветом - фоном обычного окна. Затем я с помощью WM_TIMER динамически рисую ф-wb. синуса, пользуясь InvalidateRect чтобы видеть как она рисуется в реальном времени... Все было хорошо, пока я не сказал себе, что эта ф-ция рисуется слишком маленькой... Была, не была - увеличу саму ф-цию, буду рисовать не sin(x) а 2*sin(x)... И вот тут начались грабли - так как пиксели задаются целым числом, которое округляется(с обрезаением дробной части, если я использую fist), то ф-ция получается прерывистой, что не есть хорошо. Я ВРОДЕ БЫ нашел решение - перейти от пикселей к твипам(twips) через SetMapMode, однако... Однако не тут то было. Как только я заюзал SetMapMode на оба моих контекст(на всякий случай) я убедился что... ничего не работает. При этом я перепробовал ВСЁ: менял координаты вывода, ставил ф-ции SetViewportOrgEx, SetWindowOrgEx, SetWindowExtEx, SetViewportOrgEx в самые разные места, читал в MSDN статью о представлении координат и использовании этих ф-ций... Все равно - НИЧЕГО!!! Может кто-нибудь сможет помочь мне, или подправить мою программу(если будете делать это, огромная просьба писать комменты с тем зачем это исправлено... или на худой конец помечать, ГДЕ сделаны исправления, ибо я не хочу просто рабочую программу, я хочу разобрацца ПОЧЕМУ и КАК она работает). Заранее большое спасибо...

    P. S. Программа начинает рисовать при нажатии Right Mouse Button...
     
  2. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Pinkbyte
    Может тебе поможет LineTo?
     
  3. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Нет, так как ф-ция сложная рисовать нужно именно по точкам, да и как LineTo может нарисовать округлую линию? Тогда уж помочь мог какой-нить Arc или что-то в этом роде, но мне нужно именно попиксельное рисование с масштабированием...
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    PolyBezier.

    Тогда ось ординат будет расти снизу вверх. Причём, если я правильно понял, 1 твип == 1/20 пикселя. Получается, что картинка сожмётся.
     
  5. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    поняие аппроксимация уместно. ломаные кривые с помощью отрезков с конечной длиной.
     
  6. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    С PolyBezier я так и не разобрался - что она делает?

    Насчет аппроксимации - уже догадался, ибо при масштабировании абсолютно точного значения не получится... Хотя ведь получается в фотографиях с большим разрешением высокая точность даже при масштабировании(правда и размер таких фоток в Mb нефиговый!). Еще я пробовал StretchBlt - это ваще убийство - точность никакая, масштабирование кривое... Может кто поможет нормальным примерчиком?