Как сделать закрашенный эллипс в visual studio
Репутация: нет
Всего: нет
Нужно написать закрашенный любым цветом эллипс,который можно будет двигать как ярлыки на рабочем столе.Язык С++,компилятор Visual Studio 2008.
P.S Помогите пожалуйста бедному студенту получить зачет.
P.S.S Если влом писать всю прогу,то прошу хотя бы подкинуть пару идей,как это реализовывается.
Репутация: 1
Всего: 196
M bsa | Для домашних заданий, курсовых и т.п. существует \"Центр Помощи\". |
Тема перенесена.
Репутация: 33
Всего: 37
Цитата |
Помогите пожалуйста бедному студенту получить зачет |
А для чего же Вы учитесь, бедный студент?
char szClassName[] = "EllipseWindowsApp";
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam)
switch (message)
case WM_NCHITTEST:
LRESULT currentArea = DefWindowProc(hwnd, message, wParam, lParam);
return (HTCLIENT == currentArea) ? HTCAPTION : currentArea;
>
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
>
int WINAPI WinMain(HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nCmdShow)
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof(WNDCLASSEX);
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) COLOR_HIGHLIGHT;
hwnd = CreateWindowEx(0, szClassName, "", WS_POPUP, CW_USEDEFAULT,
CW_USEDEFAULT, 160, 100, HWND_DESKTOP, NULL,
hThisInstance, NULL);
SetClassLong(hwnd, GCL_HBRBACKGROUND, (LONG)CreateSolidBrush(RGB(32,64,128))) ;
SetWindowRgn(hwnd, hRgn, TRUE);
Присоединённый файл ( Кол-во скачиваний: 4 )
archive.7z 2,66 Kb
Я знаю, что ничего не знаю© Сократ
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
[ Время генерации скрипта: 0.0990 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Замкнутая фигура, например прямоугольник или эллипс, состоит из контура и внутренней части. Контур рисуется пером, а внутренняя часть заполняется кистью. В GDI+ предоставляется несколько классов кистей для заполнения внутренних частей замкнутых фигур: SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush и PathGradientBrush. Все эти классы наследуются от класса Brush. На рисунке ниже показаны прямоугольник, залитый с помощью кисти сплошного цвета, и эллипс, залитый с помощью штриховой кисти.
Сплошные кисти
Для заполнения замкнутой фигуры нужно использовать экземпляр класса Graphics и Brush. Экземпляр класса Graphics предоставляет такие методы, как FillRectangle и FillEllipse, а в Brush сохраняются атрибуты заливки, такие цвет и узор. Объект Brush передается в качестве одного из аргументов методу заливки. В следующем примере кода показано, как выполнить заливку эллипса сплошным красным цветом.
В предыдущем примере кисть имеет тип SolidBrush, который наследуется от Brush.
Кисти штриховки
При заливке фигуры штриховой кистью нужно указать цвет переднего плана, цвет фона и стиль штриховки. Обычно цвет переднего плана — это цвет штриховки.
В GDI+ предоставляется более 50 стилей штриховки; на следующем рисунке показаны три следующих стиля: Horizontal, ForwardDiagonal и Cross.
Текстурные кисти
С помощью текстурной кисти можно выполнить заливку фигуру шаблоном, хранящимся в растровом рисунке. Например, предположим, что следующий рисунок хранится на диске в файле с именем MyTexture.bmp .
В следующем примере кода показано, как выполнить заливку эллипса путем многократного повтора рисунка, хранящегося в MyTexture.bmp .
На рисунке ниже показан заполненный эллипс.
Градиентные кисти
В GDI+ предоставляется два вида градиентных кистей: для линейного градиента и для градиента вдоль пути. Линейную градиентную кисть можно использовать для заливки фигуры цветом, который постепенно меняется при перемещении по горизонтали, вертикали или диагонали. В следующем примере кода показано, как выполнить заливку эллипса горизонтальной градиентной кистью, которая изменяется от синего до зеленого цвета при переходе с левой стороны края эллипса к правой.
На рисунке ниже показан заполненный эллипс.
Кисть градиента вдоль пути можно настроить для изменения цвета при переходе от центра фигуры к краю.
Кисти градиента пути имеют гибкие настройки. Градиентная кисть используемая для заливки треугольника на следующем рисунке, постепенно меняется с красного цвета в центре на три разных цветов у вершин.
Руководство по использованию метки рисование отсутствует.
- Конкурсные 0
- Неотвеченные
- Цитируемые
- Рейтинг
- Неотвеченные (мои метки)
Рисование на C++ WinAPI
Отображение анимации изображений на главном экране
Хочу создать программу, которая будет рисовать некоторые изображения на главном экране. То есть, я имею ввиду, чтобы картинки были отображены не в каком-либо отдельном окне, а именно на главном экране .
Python pillow Как красить каждые n пикселей своим цветом?
Вот мой код, но это не тот результат. def newImg(): image = Image.open('image.jpg') w, h = image.size pixel = [] for x in range(w): for y in range(h): r, g, .
Помогите нарисовать поле для пинпонга в консоли, на си
Как программировать обои рабочего стола на windows 10/11?
Делаю много крутых анимаций из генеративного арта (в основном JS + Canvas), и много людей просят сделать такие обои. Какие есть способы создавать программированые обои (желательно так же как в Canvas).
Visual studio c++ схема
подскажите пожалуйста, есть ли в visual studio такой компонент, с помощью которого можно создавать/рисовать схему во время выполнения программы? что-то типо этого: вот мы запустили программу. и .
Как нарисовать треугольник в форме ёлки на JavaScript?
Как нарисовать такой треугольник на JavaScript? * *** ***** ******* ********* Буду признателен, если объясните как это работает. Пока у меня такой код получается: var lines = 7; .
Как сделать с помощью циклов прямоугольник из проблелов и звездочек на JavaScript?
Как сделать с помощью циклов прямоугольник из пробелов и звездочек на JavaScript? Важно: без repeat, функций, массивов, объектов.
Как создать вот такой треугольник на JavaScript? [дубликат]
Пустой ромб из цифр на java
Задали вопрос, в котором я могу решить только верхнюю часть кода, застрял на нижней. Написать метод на Java, который принимает число int n и выводит пустой ромб из 2n − 1 строк, как показано ниже. .
Нарисовать сердце в стиле ASCII-art на основе ввода пользователя [дубликат]
Программа Java должна печатать сердечки в стиле ASCII-art на основе ввода N, заданного пользователем. Информация: Символы для печати: ♡ ♥ Печать верхней и нижней части сердца может быть выполнена .
Нарисовать пустой двойной ромб
Подскажите пжл как нарисовать двойной пустой ромб. Сам ромб я реализовал, но не пойму как сделать его двойным. function printMirror(n) < let i, j; let str = ''; for (i = 1; i
Как нарисовать ромб из звездочек на JS? [дубликат]
Как нарисовать вот такой ромб на JS? . *. ..***.. .*****. ******* .*****. ..***.. . *. Буду признателен, если объясните как это работает. . Вот код, должен выйти треугольник, а как его .
Как нарисовать ромб на JavaScript?
Связанные метки
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.5.12.42094
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
У меня есть приложение WinForms, которое взаимодействует с подключением. Если соединение в порядке, я хочу показать зеленый («все в порядке») заполненный кружок, если нет, я хочу показать красный заполненный кружок.
Я не нашел элемента круга в панели инструментов, поэтому думаю, что должен нарисовать его самостоятельно.
Я создал окно с картинками под названием picBoxClientState и начал с этого кода.
Как я могу рисовать на этой картинке всякий раз, когда я звоню CheckSignedInState() ?
Может есть способ лучше вместо рисования? (Я не хочу переключать два изображения, потому что может быть больше состояний для рисования)
вы можете использовать блок питания, чтобы легко создавать овальные формы
извините, я просто хочу нарисовать на этой картинке. На нем ничего не нарисовано, хотя отладчик доходит до этого кода.
Никогда не используйте CreateGraphics () для рисования. Переменная iconColor должна быть полем класса. Для рисования используйте событие Paint объекта pb. При изменении iconColor вызовите метод pb Invalidate (), чтобы он перерисовался.
так что если я хочу снова рисовать, я просто позвоню Invalidate() ?
да. Измените данные, используемые при рисовании, и вызовите Invalidate для элемента управления, который должен Paint.
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно.
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей.
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то.
Ответы 4
ваш код работает, кажется, что он немного не по центру, но также тот факт, что вы не избавлялись от объекта, тоже потенциально может вызвать проблемы. Попробуйте использовать приведенный ниже код в качестве метода DrawClientStateIcon .
Редактировать: полный пример кода ниже. Я добавил кнопку для переключения состояния клиента, и у меня это работает.
хм нет извините, ничего не нарисовано
вы уверены, что ваш код попадает под удар? Я попробовал ваш код, и у меня сработало переключение состояния входа клиента с помощью кнопки, я отредактирую свой код, чтобы показать полный пример
Да, отладчик попадает в строку кода. Я попробую ваш фрагмент кода в новом проекте, может быть, чего-то не хватает
Я только что протестировал ваш код в новом проекте. Я разместил кнопку и графическое изображение на форме и скопировал вставленный вами код. Отладчик доходит до строки кода, но ничего не отрисовывается.
Повторение ошибок из OP (CreateGraphics) бесполезно. Совет Ганса - это все, что нужно. Я думаю, вам следует удалить этот вводящий в заблуждение ответ!
Я не думаю, что коробка с картинками необходима. Вы можете попробовать что-то вроде этого:
Если вам нужно рисовать в Picturebox, обязательно вызовите picturebox.Invalidate ();
Вы не можете вызвать это в методе Load () вашей формы, вам нужно вызвать его с помощью кнопки.
но почему? где разница? Я просто вызываю метод, не так ли?
Когда форма использует Load (), через некоторое время она перерисовывает / делает недействительным / закрашивает, и именно здесь вы теряете информацию о своем круге. Чтобы предотвратить это, вам нужно будет нарисовать свой круг в событии Paint. Проверьте это: Краска
У меня это хорошо работает. Использование FillEllipse и передача Brush. (В отличие от DrawEllipse и передачи пера, который создавал только дурацкий эллипс). Я использовал событие рисования, использовал (PaintEventArgs e) и сделал e.Graphics.FillEllipse и т. д.
Вам нужно вызвать это в событии Form Shown.
Повторение ошибок из OP (CreateGraphics) бесполезно. Совет Ганса - это все, что нужно. Я думаю, вам следует удалить этот вводящий в заблуждение ответ!
зачем вводить в заблуждение? Это рабочее решение указанной проблемы. Разве вы не видели используемый метод _Shown?
Придется даже посмотреть определение Показано: Происходит при первом отображении формы. Это означает, что он будет работать только один раз. Никогда не используйте control.CreateGraphics для графики, предназначенной специально!
Гм, действительно. Так что использовать это - ошибка. Комментарий Ханса и ответ Джими были правильными.
Простой пример использования элемента управления Label для рисования эллипса. Вы можете использовать любой элемент управления с Paint событие для рисования фигур. Это также может быть Panel , PictureBox , Button .
Переменная bool ( clientIsSignedIn ), объявленная в области класса, используется для отслеживания текущего состояния, о котором сообщает ваше значение client.IsSignedIn .
При изменении статуса обновите clientIsSignedIn и Invalidate() Control, который предоставляет визуальную помощь.
Другие вопросы по теме
Похожие вопросы
Невозможно преобразовать из Microsoft.AspNetCore.Mvc.ActionResult в System.Collections.Generic.IEnumerable
Находите ответы на сложные технические вопросы по программированию, с которыми сталкиваются инженеры по всему миру в своей ежедневной практике на сайте RedDeveloper.
Хотя некоторые из обсуждавшихся выше методов класса Graphics определяют замкнутые области, эти методы лишь прорисовывают заданным пером контуры области, не заполняя при этом ее внутреннюю часть. Этим методам, имена которых начинаются префиксом Draw, соответствуют методы с префиксом Fill, выполняющие заливку оконтуренных областей. Первый аргумент этих методов — объект Brush, используемый для заливки области.
Вот четыре версии метода FillRectangle:
Методы FillRectangle класса Graphics
Ширина и высота результирующей фигуры определяется значениями аргументов метода. Например, если ширина и высота равны 3, вызов FillRectangle нарисует закрашенный квадрат со стороной 3 пиксела, верхний левый угол которого находится в пикселе с координатами (x, y). Если требуется нарисовать и залить некоторый прямоугольник, первым надо вызвать метод FillRectangle, чтобы при заливке не были затерты никакие линии.
Класс Graphics также включает два метода FillRectangles:
Методы FillRectangles класса Graphics
Вызов метода FillRectangles дает тот же результат, что несколько вызовов FillRectangle.
Имеется четыре версии метода FillEllipse, их аргументы не отличаются от аргументов DrawEllipse:
Методы FillEllipse класса Graphics
Метод FillEllipse работает несколько иначе, чем все методы, о которых говорилось до сих пор. Предположим, что задан эллипс с центром в точке (0, 0), высотой и шириной 20. Как известно, DrawEllipse нарисует фигуру; состоящую по горизонтали и вертикали из пикселов от 0 до 20, Таким образом, действительная высота и ширина фигуры составит 21 пиксел.
Область, закрашиваемая FillEllipse, по сути включает в себя пикселы с 1 по 19 по горизонтали и вертикали, таким образом, эффективный размер закрашиваемой области равен 19 пикселам. Я сказал «по сути», поскольку считается, что слева остается пиксел, занимающий позицию 0! Кроме того, эллипс, нарисованный DrawEllipse, всегда немного перекрывается с областью, закрашенной FillEllipse. Если нужно получить закрашенный эллипс с контуром, сначала надо вызывать метод FillEllipse, а затем — DrawEllipse.
Читайте также: