Как перекрасить пиксель формы в winforms
I am working with Images in Java, I have designed more over 100+ images(.png) format, They were all Trasparent and Black Color Drawing.
The problem is, Now I have been asked to change the color of the Drawing (Black -to ).
I have searched many code snipped at google,that changes the Bitmap (pixels) of the Image, but i am not guessing what i have to do to match the exact pixel and replace specially when the images if in Transparent mode. Below is the code in .Net (C#)
but it was not matching at all, I debugged it, throughout the file, there was no value of Red,Green,Blue parameters of Color (originalColor) variable.
Anybody can help?
4 Answers 4
Here is the Solution I have done with Pixels.
Attaching the source code so one can try the exact and get the result.
I have sample images of 128×128 (Width x Height).
//Below is the sample image and different results by applying different color
Code modifications will be highly appreciated.
Before we talk about perfromance let’s check your code:
Here there are two errors:
- You do not compare to Color.Black but you assign Color.Black to originalColor .
- You do not handle transparency.
To check for transparency you should compare not the Color object but the R, G, B values, let’s change to:
Now you’ll see that it works but it takes a very long time to process each image: GetPixel and SetPixel are pretty slow (primary because they check and calculate everything for each call). It’s much better to handle bitmap data directly. If you know the image format in advance (and it’s fixed for each image) then you can do it much much faster with little bit more code:
Of course this can be further optimized and you may need to handle different formats ( see this list of pixel formats and this article about their layout) but consider it a starting point to work with bitmaps.
For completeness this is equivalent color without direct access to bitmap data. Please note that this should be rarely used because it’s terribly slow.
Also please note that this consider alpha channel in comparison (so 50% transparent green, for example, is not same color as 30% transparent green). To ignore alpha you may use something like this:
Как изменить дизайн windows form в visual studio
Изменить цвет формы из другой формы
Доброго времени суток! Создаю Form1 закидываю на неё Button1. При нажатии на Button1 открывается.
По каждому щелчку мыши изменить цвет формы
Уважаемые, с языком С# сталкиваюсь впервые, и со средой разработки Visual Studio — в частности.
Если введенная дата–выходной, изменить цвет фона формы
В текстовом поле вводится дата. Если введённая дата–выходной (суббота, воскресенье) , то форма.
How to change the form border color c#?
I would like to change window form border color (the border with the form title). The example I found in codeplex is too much and confusing. Can any help me on something simpler?
7 Answers 7
Override it with:
Unfortunately, since the form border is drawn by the Operating System, this is a complicated task. There is no real way around that.
Do NOT click the ProjectDistributor link on the CodePlex page below
The CodePlex Project for Drawing Custom Borders makes this very easy, though. Just build the form using SkinnedForm from that project instead of a standard Form, and it should work — you really don’t need to do anything different in your code.
Workaround — Just follow these steps:
- Set FormBorderStyle to None .
- Cover the form with a panel and leave some space for border.
- Set the color you want for the border as the form back color.
Now, the panel serves as the main container and you can change the background as you want and the form serves as the border.
The Final Result
This works for me in Windows 10 and 11:
Like previously mentioned, changing the actual color of the border is difficult. The solution above with the panel has limitations like you can’t resize the form. I found a reasonably easy trick without a lot of the other limitations.
- Create a form
- Set FormBorderStyle to None
- Add 4 panels
- Set the background color of the panels to the color of the border you want
- Anchor one each to the top, bottom, left, and right
- Set the height(top/bottom) or width (left/right) to the thickness of the border you want. 2 or 3 looks really good.
It looks like a border, it will resize with the window, and you can drop anything else into the form you want. The limitation is, you must do this as the very first thing you add to the form.
Below «ForeColor» their should be a setting called «FormBorderStyle» You can edit it with that in VisualStudio 2015. Or you can go in control panel path should be something like this «Control Panel\Appearance and Personalization\Personalization» their will be a second setting called «Color» can change that to be what color you want it will change the color of the boarder in all of the programs to the color you set.
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode
Как поменять цвет фона элементов в Windows Forms
В данной статье мы разберем несколько вариантов изменения цвета элементов Windows Forms на примере фона формы Form1 и прочих компонентов.
Способ №1. Изменение цвета в свойствах элемента.
Для многих это самый легкий способ изменения цветовой палитры элементов, так как не надо писать код, всё визуализировано и интуитивно понятно.
Для этого надо выбрать элемент формы (или саму форму) и в «Свойствах» найти вкладку «Внешний вид». Нас интересует строка BackColor:
Здесь имеется большое количество цветовых схем и их визуальных представлений.
Выберем для примера какой-либо из цветов, чтобы изменить фон формы:
Легко, незамысловато, понятно.
Следующие способы будут производиться в коде.
Способ №2. Изменение цвета, используя структуру Color.
Это самый простой способ среди кодовых вариаций.
«На пальцах» это выглядит так:
Если мы захотим закрасить фон формы в зеленый цвет, то строка кода будет выглядеть вот так:
При запуске форма будет выглядеть так:
Если понадобится изменить цвет, например, кнопки Button на тёмно-бордовый, код будет таким:
Данный способ прост тем, что требуется лишь написать название цвета, которых также большое количество.
Зачастую этих двух способов хватает для оформления программы. Если же нужна более гибкая настройка или же среди стандартных цветов не имеется необходимых, можно воспользоваться способами, описанными ниже.
Способ №3. Изменение цвета, используя метод Color.Argb.
Этот и следующий методы позволят генерировать нужный цвет, используя значения цветового канала RGB.
RGB — это цветовая модель, которая синтезирует цвета, используя смешивание трёх основных цветов (Красного — Red, Зеленого — Green, Синего- Blue) с чёрным, вследствие чего получаются новые цвета и оттенки. Зависит получаемый цвет от интенсивности этих трёх основных цветов. Если смешать Красный, Зеленый и Синий в максимальной насыщенности, получится белый цвет. Если не смешивать их, то остаётся чёрный.
Данный способ позволяет регулировать интенсивность трех этих цветов, при смешивании которых и получится нужный нам оттенок.
Интенсивность в числовой форме для удобства применения обозначается от 0 (минимальная интенсивность) до 255(максимальная интенсивность). Все три цвета можно «варьировать» по этой шкале.
Словесно это выглядит вот так:
Названиеэлементаформы.BackColor = Color.FromArgb(Насыщенность красного, Насыщенность зеленого, Насыщенность синего);
Чтобы закрасить фон программы в чёрный цвет, используя данный метод, надо написать вот такую строку:
Как перекрасить пиксель формы в winforms
С помощью специального окна Properties (Свойства) справа Visual Studio предоставляет нам удобный интерфейс для управления свойствами элемента:
Большинство этих свойств оказывает влияние на визуальное отображение формы. Пробежимся по основным свойствам:
Name : устанавливает имя формы — точнее имя класса, который наследуется от класса Form
BackColor : указывает на фоновый цвет формы. Щелкнув на это свойство, мы сможем выбрать тот цвет, который нам подходит из списка предложенных цветов или цветовой палитры
BackgroundImage : указывает на фоновое изображение формы
BackgroundImageLayout : определяет, как изображение, заданное в свойстве BackgroundImage, будет располагаться на форме.
ControlBox : указывает, отображается ли меню формы. В данном случае под меню понимается меню самого верхнего уровня, где находятся иконка приложения, заголовок формы, а также кнопки минимизации формы и крестик. Если данное свойство имеет значение false, то мы не увидим ни иконку, ни крестика, с помощью которого обычно закрывается форма
Cursor : определяет тип курсора, который используется на форме
Enabled : если данное свойство имеет значение false, то она не сможет получать ввод от пользователя, то есть мы не сможем нажать на кнопки, ввести текст в текстовые поля и т.д.
Font : задает шрифт для всей формы и всех помещенных на нее элементов управления. Однако, задав у элементов формы свой шрифт, мы можем тем самым переопределить его
ForeColor : цвет шрифта на форме
FormBorderStyle : указывает, как будет отображаться граница формы и строка заголовка. Устанавливая данное свойство в None можно создавать внешний вид приложения произвольной формы
HelpButton : указывает, отображается ли кнопка справки формы
Icon : задает иконку формы
Location : определяет положение по отношению к верхнему левому углу экрана, если для свойства StartPosition установлено значение Manual
MaximizeBox : указывает, будет ли доступна кнопка максимизации окна в заголовке формы
MinimizeBox : указывает, будет ли доступна кнопка минимизации окна
MaximumSize : задает максимальный размер формы
MinimumSize : задает минимальный размер формы
Opacity : задает прозрачность формы
Size : определяет начальный размер формы
StartPosition : указывает на начальную позицию, с которой форма появляется на экране
Text : определяет заголовок формы
TopMost : если данное свойство имеет значение true , то форма всегда будет находиться поверх других окон
Visible : видима ли форма, если мы хотим скрыть форму от пользователя, то можем задать данному свойству значение false
WindowState : указывает, в каком состоянии форма будет находиться при запуске: в нормальном, максимизированном или минимизированном
Программная настройка свойств
С помощью значений свойств в окне Свойства мы можем изменить по своему усмотрению внешний вид формы, но все то же самое мы можем сделать динамически в коде. Перейдем к коду, для этого нажмем правой кнопкой мыши на форме и выберем в появившемся контекстном меню View Code (Просмотр кода). Перед нами открывается файл кода Form1.cs. Изменим его следующим образом:
В данном случае мы настроили несколько свойств отображения формы: заголовок, фоновый цвет, ширину и высоту. При использовании конструктора формы надо учитывать, что весь остальной код должен идти после вызова метода InitializeComponent() , поэтому все установки свойств здесь расположены после этого метода.
Установка размеров формы
Для установки размеров формы можно использовать такие свойства как Width/Height или Size. Width/Height принимают числовые значения, как в вышеприведенном примере. При установке размеров через свойство Size, нам надо присвоить свойству объект типа Size:
Объект Size в свою очередь принимает в конструкторе числовые значения для установки ширины и высоты.
Начальное расположение формы
Начальное расположение формы устанавливается с помощью свойства StartPosition , которое может принимать одно из следующих значений:
Manual : Положение формы определяется свойством Location
CenterScreen : Положение формы в центре экрана
WindowsDefaultLocation : Позиция формы на экране задается системой Windows, а размер определяется свойством Size
WindowsDefaultBounds : Начальная позиция и размер формы на экране задается системой Windows
CenterParent : Положение формы устанавливается в центре родительского окна
Все эти значения содержатся в перечислении FormStartPosition , поэтому, чтобы, например, установить форму в центре экрана, нам надо прописать так:
Фон и цвета формы
Чтобы установить цвет как фона формы, так и шрифта, нам надо использовать цветовое значение, хранящееся в структуре Color:
Кроме того, мы можем в качестве фона задать изображение в свойстве BackgroundImage , выбрав его в окне свойств или в коде, указав путь к изображению:
Чтобы должным образом настроить нужное нам отображение фоновой картинки, надо использовать свойство BackgroundImageLayout , которое может принимать одно из следующих значений:
None : Изображение помещается в верхнем левом углу формы и сохраняет свои первоначальные значения
Tile : Изображение располагается на форме в виде мозаики
Center : Изображение располагается по центру формы
Stretch : Изображение растягивается до размеров формы без сохранения пропорций
Zoom : Изображение растягивается до размеров формы с сохранением пропорций