Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: Можно ли считать часть картинки из файла? И как Добавлено: 06.08.06 06:47  

Автор вопроса:  Morpheus | Web-сайт: xury.zx6.ru
Вот такая вот трабла.
Хотел сделать прогу для КПК чтобы карту местности показывала; набросок работает нормально, но большие рисунки не берёт :(
упихть туда удалось гдето 300 кило. Может это правда из-за разрешения? типа я приравниваю размер ПикчерБокса к размеру рисунка - пишет ошибку. Но по любому надо оптимизировать как то
а я в .НЕТ да ещё и для КПК не ах мягко говоря...
Гугл мне много полезного надавал, но в основном просто по загрузке картинок и немного по сохранению.
Может кто знает как считать нужный прямоугольник по координатам из файла?
Заранее сенкс :)

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #1
Добавлено: 06.08.06 17:43
Вот сделал что-то на подобии BitBlt то есть решил разбить на кусочки и рисовать их, но ничо не могу понять: проект создан для КПК, компилируется и запускается на обоих компах без ошибок. но вот этот вот код:


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        i = i + 5
        'dst.CreateGraphics.Clear(dst.BackColor)
        dst.CreateGraphics.DrawImage(src.Image, i, 1)
        dst.CreateGraphics.DrawImage(src.Image, i + 10, 30)
    End Sub

на КПК выдаёт error!
NotSupportedException
Application::Run+0xf
Form1::Main+0xa :-(

Как же так? :( причё без разницы - проект для PocketPC или WindowsCE :(

Ответить

Номер ответа: 2
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #2 Добавлено: 06.08.06 21:31
попробуй сначала создать объект Graphics, а уже потом что то рисовать на нем.. (2-я строчками вместо одной)
и что такое dst у тебя?

Ответить

Номер ответа: 3
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 06.08.06 21:34
Можно ли считать часть картинки из файла?

считать часть файла это вряд ли.. Открывать по любому надо будет полностью.. можно потом из целой картинки через метод Clone получить определенный участок нужного размера..

Ответить

Номер ответа: 4
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #4
Добавлено: 06.08.06 21:42
dst & src - два Пикчербокса.
щас попробую.

(4 минуты спустя)
вот сделал, возможно криво так как не понял как разбивать на две строчки:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        i = i + 5
        'dst.CreateGraphics.Clear(dst.BackColor)
        dst.CreateGraphics()
        dst.CreateGraphics.DrawImage(src.Image, i, 1)
    End Sub

Всё равно не работает - та же ошибка :(
Кстати, в папке Релиз вместе с ЕХЕ лежат два файла: mscorlib.dll и mscorlib.xml, перемещение в папку с прогой не помогает, может их в виндовс надо как то запихнуть?

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 06.08.06 21:54
Нее, не так...
Dim Graph as Graphics=dst.CreateGraphics
Graph.DrawImage(src.Image, i, 1)
что то вроде этого..
Ты лучше скажи, что ты вообще хочешь сделать? подробнее опиши твою задачу.. потому как с GDI+ проблем вообще никаких нет.. он работает отлично.. скорее всего ты что то намудрил..

Ответить

Номер ответа: 6
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #6 Добавлено: 06.08.06 22:04
mscorlib.dll это вообще странно.. ты что то подключал к проекту?

Ответить

Номер ответа: 7
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 06.08.06 22:11
NotSupportedException

ни на какие мысли не наводит?

Ответить

Номер ответа: 8
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #8
Добавлено: 06.08.06 22:20
Не, не наводит :(
То что я выложил, это весь код, то есть почти весь что я написал сам. К проекту явного ничего не подключал - указал что это SmartDeviceApplication и всё. Всё что я хочу сделать на данный момент - вывести изображение или его часть в нужной части Пикчербокса (то есть найти работающий на КПК аналог BitBlt)

вообще даже строка dst.CreateGraphics() вызывает этот "NotVerySupportedException" :( код EROSа тоже работает отлично только на компе

Вообще странно что в студии разрешены многие средства на этапе разработки, которые не были включены в Виндовс мобайл и Компакт .НЕТ. Может Компакт . НЕТ обновить? хз

Ответить

Номер ответа: 9
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 06.08.06 22:34
BitBlt я не силен в АПИ, но это, если не ошибаюсь, копирование изображения,так?
Если да, то GDI тебе абсолютно не нужен...
Тебе надо через System.Drawing.Bitmap.Clone получить часть(или все) готового изображения и присвоить свойству Image 2-го пикчербокса. Вот и все...

Ответить

Номер ответа: 10
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #10 Добавлено: 06.08.06 22:41
 А NotSupportedException говорит о том, что какой то метод в данной версии CFW не поддерживается...

Ответить

Номер ответа: 11
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #11
Добавлено: 06.08.06 23:35
аа... а я думал это исключение не поддерживается :)

2 EROS, а как это юзать? после того как я узнал что после строки System.Drawing.Bitmap. ничего нет(?!?!?), залез в мсдн и нашёл http://msdn2.microsoft.com/en-us/library/ms141944.aspx,
 но не могу понять - чё это за PixelFormat? Эххх, изменился басик да ещё как :)

Ответить

Номер ответа: 12
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #12
Добавлено: 06.08.06 23:53
( 'Clone' is not a member of System.Drawing.Bitmap')

Ответить

Номер ответа: 13
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #13 Добавлено: 07.08.06 11:49
Попробуй выполнить этот код..
        Dim myBitmap As New Bitmap(src.Image)
        Dim cloneRect As New Rectangle(0, 0, 50, 50)
        dst.Image = myBitmap.Clone(cloneRect, myBitmap.PixelFormat)

Ответить

Номер ответа: 14
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #14 Добавлено: 07.08.06 11:55
блин.. сорри, не глянул.. метод Clone не поддерживается в CFW вообще...(((

Ответить

Номер ответа: 15
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #15 Добавлено: 07.08.06 12:42
засада с этими КПК.. (( половина методов не поддерживаются..
Попробуй такой вариант
        '// Создаем объект Bitmap
        Dim myBitmap As New Bitmap(100, 100)
        '// Создаем объект Graphics
        Dim Graph As Graphics = Graphics.FromImage(myBitmap)
        '// Координаты и размер области для копирования
        Dim srcRect As New Rectangle(0, 0, 100, 100)
        '// Координаты и размер области куда вставляем
        Dim dstRect As New Rectangle(0, 0, 100, 100)
        '// Переносим участок на наш Bitmap
        Graph.DrawImage(src.Image, dstRect, srcRect, GraphicsUnit.Pixel)
        '// Отображаем
        dst.Image = myBitmap
        '// Убиваем ненужное
        Graph.Dispose()

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам