Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рисую трафарет разным цветом, в GDI есть в DGI+ что делать? 
V
    Опции темы
Rapalex
Дата 16.4.2007, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 2
Всего: 8



Суть в следующем, есть у меня чёрно белый битмап (на нём изображена какаята стрелочка),

Иужно мне её на окне отрисовать оперделённым цветом, да так чтоб она прозрачной была
(в смысле стрелочка в квадрате, и вто чтоб квадрат не закрашивал рисунки под собой, а была видна только стрелочка определённого цвета).

В GDI это при помоши ROP2 всё делалось, я там долго сидел биты считал чтоб такое сделать, а что в GDI+ делать?


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
enginer
Дата 16.4.2007, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 16.1.2007

Репутация: 1
Всего: 1



Может, подойдут методы MakeTransparent(...) и SetPixel(...) класса Bitmap? Ну а чтоб не гемороиться с обходом всех пикселей можно попробовать использовать заливку
Или я что-то не так понял?
PM MAIL   Вверх
mr.DUDA
Дата 16.4.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Нужно рисовать картинку с объектом ImageAttributes, в котором выставить ColorMatrix. Пример из мсдн:

Код
private void SetColorMatrixExample(PaintEventArgs e)
{
             
    // Create a rectangle image with all colors set to 128 (medium
             
    // gray).
    Bitmap myBitmap = new Bitmap(50, 50, PixelFormat.Format32bppArgb);
    Graphics g = Graphics.FromImage(myBitmap);
    g.FillRectangle(new SolidBrush(Color.FromArgb(255, 128, 128, 128)),
        new Rectangle(0, 0, 50, 50));
    myBitmap.Save("Rectangle1.jpg");
             
    // Open an Image file and draw it to the screen.
    Image myImage = Image.FromFile("Rectangle1.jpg");
    e.Graphics.DrawImage(myImage, 20, 20);
             
    // Initialize the color matrix.
    ColorMatrix myColorMatrix = new ColorMatrix();
    
    // Red
    myColorMatrix.Matrix00 = 1.75f; 
    
    // Green
    myColorMatrix.Matrix11 = 1.00f; 
    
    // Blue
    myColorMatrix.Matrix22 = 1.00f; 
    
    // alpha
    myColorMatrix.Matrix33 = 1.00f; 
   
    // w
    myColorMatrix.Matrix44 = 1.00f; 
    
             
    // Create an ImageAttributes object and set the color matrix.
    ImageAttributes imageAttr = new ImageAttributes();
    imageAttr.SetColorMatrix(myColorMatrix);
             
    // Draw the image using the color matrix.
    Rectangle rect = new Rectangle(100, 20, 200, 200);
    e.Graphics.DrawImage(myImage, rect, 0, 0, 200, 200, 
        GraphicsUnit.Pixel, imageAttr);      
    
}


Конкретную матрицу составлять придётся методом тыка, т.к. сильно зависит от того что нужно получить.


--------------------
user posted image
PM MAIL WWW   Вверх
Rapalex
Дата 16.4.2007, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

Репутация: 2
Всего: 8



У меня сть трафарет, нужно создать рисунок который весь прозрачный кроме трафарета нарисованым определённым цветом. Как такое сделать?


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
enginer
Дата 16.4.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 16.1.2007

Репутация: 1
Всего: 1



Как я выше писал, пробовал?

Код

            Bitmap myBitmap = new Bitmap("c:\\arrow.bmp"); // грузим картинку
            myBitmap.MakeTransparent(Color.Black);               // говорим что черный - прозрачный
            MapFill mf = new MapFill();                                      // заливаем остальное нужным цветом
            mf.Fill((Image)myBitmap,new Point(16,52),Color.Aquamarine);
            e.Graphics.DrawImage(myBitmap,new Point(100,100)); // ну и рисуем где надо


MapFill - из моего предыдущего поста. И на сколько я понимаю, делает именно то что тебе нужно
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0778 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.