1) Что делать? Вот мне надо часто перерисовывать чтото. Как мне быстрее это сделать. Не,как мне нарисованное изображение сохранить в переменную какую нить перем-ую и потом выводить её. В Image,Bitmap не могу найти свойств для рисования на них.
2) Вот в род-ой форме MDI у меня есть кнопка. Как к ней получить доступ? Или I must объявлять переменные в каждой дочерней форме?
Кроме всяких X'ов и GL'ев оч быстро рисует функция BitBlt. И просто извиняюсь, не могу определить уровень,не понимаю что тебе точно надо получить. Изображение в матрицу пробывал загружать? выводить парой вложеных циклов?? (довольно медленно) или ты что-то посложнее имел ввиду? Так можно той же Bitblt копировать на другой холст а потом оттуда вернуть. всё же для трансформа изображения имхо нет ничего лучше (и медленнее) чем двухмерного массива
Мне надо: Дано поле, которое не меняется ==> на нем можно сэкономить если нарисовать его 1н раз. и где я проведу мышкой там надо нарисоть пару Ректангов и Эллипсов
Но эти рэктанги временны, когда мышку уберу они не нужны. Может добавить Пикчур бокс, нарисовать его и его копировать. Но объект это лишнее место(если быть правильным)
Стратегию. Точнее типа того. Школьная игра есть "Точки" называется(в простонародье). Щас на уроках модно в неё время коротать )). А так с компом ещё тренероваться буду.
Откуда взять компонент PrintDocument, чтобы напечатать текст в указанном месте? Например, в приведенном ниже коде обработчик событий PrintPage используется для печати строки "SampleText" черным цветом с использованием шрифта Arial, начиная с точки с координатами 150, 125:
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
e.Graphics.DrawString("SampleText", New Font("Arial", 80, FontStyle.Bold), Brushes.Black, 150, 125)
End Sub
Пока все задумались на компонентом для печати я добавлю вопрос: Обязательно надо выгружать всякие Pen'ы Brush'ы перед выходом из функции или они сами того самого...
И что такое? Я рисую на пикчур боксе и как потом нарисованое скопировать на форму. Никак не могу найти такую функцию.
Имхо все графические операции можно реализовать с помощью нескольких апи, а именно: BitBlt, PlgBlt (Параллелограмм, только WinNT), SetPixel. Арки, эллипсы, тоже реализуется несложно. Кисти заданые по умолчанию подходят в большинстве случаев (мне, остальным не знаю, мне тоже интересно узнать мнение окружающих по этому поводу). Если хочешь создать что-то нестандартное-груза дополнительные браши. а так они.
Кстати, PlgBlt-классная штука блин, её надо бы поизучать. Она преобразует прямоугольное растровое изображение в паралелограмное. С её помощью (и не без помощи тригонометрии) можно БЕЗ МАЛЕЙШЕГО ТОРМОЗА организовать вращение картинки, практически любой. Может кто нибудь знает как её можно запустить под управлением 98 винды? может какую нить ДЛЛ скопировать?
уууу.. Блиин. На VB6 давно бы уже написал.
Я запарился. Вот Vb.Net так точно NET А я думал что ".NET" означает улучшенную работу с инетом, а оказывается они хотели сказать "Виг вам" мол нифига вы здесь не сможете сделать.
Смотрите: я провожу мышкой и мне надо всё перерисовать. А эти перерисовки будут часто. Чтобы облегчить процессору жизнь я создаю какой-нить пикчур бокс.
PicturePole.CreateGraphics()
рисую фигню всякую
[QUOTE]- И ЧТО?
- ЧТО?
- А НИЧЕГО![/QUOTE]
Me.Graphics.DrawImage [B]PicturePole.Image[/B], который равен NOTHING(переводится наверное "нифига". И зачем я всё это рисовал? Чтоже это получается? Что жизнь прожита напрасно!?!?
Кстати в API-Gidenе пример по BitBlt в Net приводится DrawImage
Давно хотел спросить что за наказание "Череп"? Отжимания?
Создай DC в памяти, нарисуй там что хочешь, и держи в переменной его. Когда надо перебросить на экран, копируешь его в тот hDC, который нужно обновить.
CreateCompatibleDC, CreateCompatibleBitmap, BitBlt - это всё, что тебе нужно.
Рисуешь основное поле. Когда нужно мышой дорисовать что-то, копируешь это основное поле в промежуточный memory DC, чтобы не портить основное поле, дорисовываешь свои мышиные каракули и вывод на экран.
Созданные кисти, перья и всякие другие объекты GDI необходимо удалять. Теоретически система удалит их после закрытия программы. Но на практике, если такого хлама на момент закрытия проги скопилось много, он так и останется в памяти, вызывая всякие черные прямоугольники на экране, либо коверкая шрифты, либо искажая менюшки по всей системе.