BitBlt.NET

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

BitBlt.NET

Сообщение MIT » 03.12.2008 (Ср) 22:23

Необходимо использовать технологию BitBlt в среде .NET. API-Guide гласит, что данная функция заменена на System.Drawing.Graphics.DrawImage, но по моему он немного не прав. Так собственно как реализована данная возможность (или юзать API)?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: BitBlt.NET

Сообщение Williams » 04.12.2008 (Чт) 1:22

Нет никаких препятствий использованию API:

Код: Выделить всё
Public Declare Function BitBlt Lib "gdi32.dll" (hdc As IntPtr , nXDest As Integer, nYDest As Integer, nWidth As Integer, nHeight As Integer, hdcSrc As IntPtr, nXSrc As Integer, nYSrc As Integer, dwRop As TernaryRasterOperations) As Boolean
И вы думаете, что вас оставят в живых после прочтения этого поста?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: BitBlt.NET

Сообщение Viper » 04.12.2008 (Чт) 8:31

Собственно System.Drawing.Graphics.DrawImage вполне позволяет делать желаемое, хотя ничто не мешает использовать и BitBlt.
З.Ы. Лучше использовать вместо Declare атрибут <DLLImport>
Весь мир матрица, а мы в нем потоки байтов!

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: BitBlt.NET

Сообщение Joo » 04.12.2008 (Чт) 10:07

Лично меня тоже вполне устраивает System.Drawing.Graphics.DrawImage, не могу понять в чем собственно проблема.
В чем????
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: BitBlt.NET

Сообщение MIT » 04.12.2008 (Чт) 11:41

Насколько я знаю, bitblt копирует изображение откуда-то куда-то, а drawimage рисует картинку из файла в прямоугольник.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: BitBlt.NET

Сообщение Williams » 04.12.2008 (Чт) 11:50

MIT писал(а):Насколько я знаю, bitblt копирует изображение откуда-то куда-то, а drawimage рисует картинку из файла в прямоугольник.


Предположения про файл и прямоугольник не являются верными, точнее это только один из вариантов
И вы думаете, что вас оставят в живых после прочтения этого поста?

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: BitBlt.NET

Сообщение Joo » 04.12.2008 (Чт) 12:44

MIT писал(а):Насколько я знаю, bitblt копирует изображение откуда-то куда-то, а drawimage рисует картинку из файла в прямоугольник.

Не из фала, а из источника, которым является другая картинка, а точнее объект Image.

))) Я так и не понял, какая перед тобой задача? Что тебе нужно сделать, чего не умеет DrawImage?????
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: BitBlt.NET

Сообщение MIT » 04.12.2008 (Чт) 15:20

Что хочу: есть форма, на ней картинка; часть этой картинки надо перенести на 1 (2,6, 20, не важно) px налево (направо etc). Объект Image, насколько я знаю из формы получить нельзя. Соответственно необходим функционал BitBlt.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: BitBlt.NET

Сообщение Joo » 04.12.2008 (Чт) 17:22

MIT писал(а):Что хочу: есть форма, на ней картинка; часть этой картинки надо перенести на 1 (2,6, 20, не важно) px налево (направо etc). Объект Image, насколько я знаю из формы получить нельзя. Соответственно необходим функционал BitBlt.


Ну это ты зря.

Картинка где? У формы в BackgroundImage? В отдельном компоненте? Ты её рисуешь в событии Paint?
Я могу перенести, разделить, растянуть, передвинуть, и т.д. и все это используя DrawImage.

Кидай код где у тебя траблы, я тебе напишу чтобы все работало, а то я что-то немного не догоняю, где и что у тебя лежит ))
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: BitBlt.NET

Сообщение MIT » 05.12.2008 (Пт) 15:00

Кароче, вот
wa_test_inf_progress2.rar
примерчег
(48.49 Кб) Скачиваний: 63

Цель - оптимизировать анимацию. Циферки можно выкинуть.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: BitBlt.NET

Сообщение Joo » 05.12.2008 (Пт) 15:29

MIT писал(а):Кароче, вот
wa_test_inf_progress2.rar

Цель - оптимизировать анимацию. Циферки можно выкинуть.


Из увиденного я понял что у тебя проблемы с мерцанием, добавь:
Код: Выделить всё
    Public Sub New()
        Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
        Me.SetStyle(ControlStyles.UserPaint, True)
        Me.SetStyle(ControlStyles.ResizeRedraw, True)
        Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
    End Sub


И так вопросик из чистого любопытства, зачем наследуешь панель?
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: BitBlt.NET

Сообщение MIT » 05.12.2008 (Пт) 16:19

Шоб фактического дизайнера не было - первое, второе - возможность последующей замены (при необходимости) Panel на RealTransparent Panel. А так - спасибо, помогло. Но все же как DrawImage может заменить BitBlt (например если использовать его для перемещения уже отрисованного куска налево)?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: BitBlt.NET

Сообщение Joo » 05.12.2008 (Пт) 17:00

MIT писал(а):Шоб фактического дизайнера не было - первое, второе - возможность последующей замены (при необходимости) Panel на RealTransparent Panel. А так - спасибо, помогло. Но все же как DrawImage может заменить BitBlt (например если использовать его для перемещения уже отрисованного куска налево)?

Конечно!!!!

p/s
А наследовать лучше, для твоего контрола, Control. ИМХО.
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: BitBlt.NET

Сообщение MIT » 05.12.2008 (Пт) 17:58

Я тут писал(а):Но все же как DrawImage может заменить BitBlt (например если использовать его для перемещения уже отрисованного куска налево)?


Scarabey писал(а):Конечно!!!!
Это ты о чем ? :)
Scarabey писал(а):А наследовать лучше ... Control

Чем? Мой контрол будет сложнее, там пригодятся панельные возможности...
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: BitBlt.NET

Сообщение Nord777 » 05.12.2008 (Пт) 23:05

Но все же как DrawImage может заменить BitBlt (например если использовать его для перемещения уже отрисованного куска налево)?
Для сдвига содержимого окна тогда уж не BitBlt, а ScrollWindow(и кстати будет побыстрее DrawImage).
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Joo
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 762
Зарегистрирован: 14.08.2008 (Чт) 11:55
Откуда: Казахстан

Re: BitBlt.NET

Сообщение Joo » 06.12.2008 (Сб) 10:14

MIT писал(а):Это ты о чем ? :)

- Но все же DrawImage может заменить BitBlt?
- Конечно может!!!
Scarabey писал(а):А наследовать лучше ... Control

MIT писал(а):Чем? Мой контрол будет сложнее, там пригодятся панельные возможности...

Какие именно панельные возможности тебе нужны? Возможно следует унаследовать Control, и написать пару строк чтобы он был контейнером и поддерживал прозрачные цвета ))
"Им будет не просто, тем кто полагается на истину авторитета, вместо того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: BitBlt.NET

Сообщение MIT » 06.12.2008 (Сб) 12:22

Я не раз уже писал(а):Но все же как DrawImage может заменить BitBlt ...?
Что может - наверно, а как?
Scarabey писал(а):написать пару строк чтобы он был контейнером
Ну, может так и лучше будет, спасибо за совет.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 91

    TopList