Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/30: Рейтинг темы: голосов - 30, средняя оценка - 4.63
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22

Разместить IPictureDisp в Picture Box с координатами

23.04.2020, 19:16. Показов 7033. Ответов 136
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Visual Basic
1
2
Public TempPic As IPictureDisp
Set TempPic = LoadPicture(FileName)
У объекта IPictureDisp нет свойства Picture поэтому, метод PaintPicture ничего не выводит в Picture Box. При использовании:
Visual Basic
1
Set Picture1 = TempPic
изображение, заведомо меньшее по размеру, чем Picture Box, размещается с нулевыми координатами. Существует ли возможность разместить изображение из IPictureDisp в Picture Box с координатами, отличными от нуля?
Интересно сделать.
Если простой возможности нет, придётся использовать невидимый Picture Box.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.04.2020, 19:16
Ответы с готовыми решениями:

Можно ли динамически создавать Picture Box внутри другого Picture Box?
Можно ли динамически создавать Picture Box внутри другого Picture Box. Если можно то как? Заранее благодарен

Как запретить заход одного объекта (picture box) на другой picture box
Создаю платформер на Windows Forms, как запретить заход одного picture box'a на другой?

Picture box
Нужно создать программу. Суть программы: Небходимо передвинуть картинки чтобы получилось изображение и надпись "портрет". Я...

136
12.05.2020, 19:48
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Ну давай исходник GdiPlus.tlb, посмотрим, есть там декларации или нет?
У меня нет исходника, это не я создал эту библиотеку, но исходник легко получить через OleView. Декларации конечно же там будут, но пользователю-то ничего не нужно декларировать! Ты ее подключаешь также как и в любом другом языке и никакого кода ты не пишешь. Одно дело пользоваться ApiViewer и вручную собирать нужные функции, структуры и т.п., а другое дело просто подключить библиотеку и ничего не нужно делать, т.к. она добавляется в пространство имен проекта.
Думаешь в PureBasic нет деклараций GDI+? Вот бегло посмотрел форумы по PB вообще не увидел там чтобы PB содержал какие-либо хидеры к GDI+ и люди вручную пишут прототипы. Покажи мне, если не трудно, как на PureBasic'е использовать тот GDI+ код который я скинул выше. Посмотрим как он работает без деклараций. Все что я нашел было типа такого:
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Import "gdiplus.lib"
  GdiplusStartup.l(*token, *input.GdiplusStartupInput, *output.GdiplusStartupOutput)
  GdiplusShutdown(token.i)
  GdipCreateFromHDC.l(*hDC, *graphics)
  GdipDeleteGraphics.l(*graphics)
  GdipCreatePath.l(fillMode.l, *path)
  GdipCreateSolidFill.l(color.l, *brush)
  GdipDeleteBrush.l(*brush)
  GdipDeletePath.l(path.i)
  GdipFillPath.l(*graphics, *brush, path.i)
  GdipAddPathLine.l(*path, x1.f, y1.f, x2.f, y2.f)
  GdipSetSmoothingMode.l(*graphics, smoothingMode.l)
  GdipSetCompositingMode.l(*graphics, compositingMode.l)
  GdipSetCompositingQuality.l(*graphics, compositingQuality.l)
  GdipSetInterpolationMode.l(*graphics, interpolationMode.l)
  GdipCreateMatrix.l(*matrix)
  GdipDeleteMatrix.l(matrix.i)
  GdipTranslateMatrix.l(matrix.i, offsetX.f, offsetY.f, order)
  GdipSetWorldTransform.l(*graphics, matrix.i)
  GdipStartPathFigure.l(*path)
  GdipCreatePen1(color.l, width.f, unit.l, *pen)
EndImport

0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
12.05.2020, 19:53
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Ну давай исходник GdiPlus.tlb, посмотрим
Хотя я и сам уже посмотрел:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
module AboutGDIplusTypeLib {
    const LPSTR GDIplus_TYPELIB_DATE = "Friday, 07 February 2003 02:40:20 UTC";
    const LPSTR GDIplus_TYPELIB_AUTHOR = "Dana Seaman";
    const LPSTR GDIplus_TYPELIB_VERSION = "1.05";
    const LPSTR GDIplus_TYPELIB_COPYRIGHT = "Copyright 2003, Dana Seaman";
    const LPSTR GDIplus_TYPELIB_DESCRIPTION = "Windows GDI+ Type Library";
    const LPSTR GDIplus_TYPELIB_URL = "http://www.cyberactivex.com/";
    const LPSTR GDIplus_TYPELIB_EMAIL = "dseaman@cyberactivex.com";
    const LPSTR GDIplus_TYPELIB_EMAIL_ALT = "dseaman@uol.com.br";
    const LPSTR GDIplus_TYPELIB_REVISIONS = "Place your name/date/revision below";
    const LPSTR GDIplus_TYPELIB_REVISION_A = "";
    const LPSTR GDIplus_TYPELIB_REVISION_B = "";
    const LPSTR GDIplus_TYPELIB_REVISION_C = "";
    const LPSTR GDIplus_TYPELIB_WARNING = "Please do not remove/modify this module and claim this work as your own!";
};
Обычная декларация:
0
12.05.2020, 20:54

Не по теме:

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Обычная декларация
Обычная? А через Declare тогда какая? :)
Это универсальная, языконезависимая декларация.

0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
12.05.2020, 21:37
Цитата Сообщение от The trick Посмотреть сообщение
Это универсальная, языконезависимая декларация.
Я очень этому рад! Что это меняет? Написал(а) Dana Seaman нам библиотеку и мы используем, а если не написал(а)?

Мне как то всё равно. У меня под рукой из коробки две отличные кроссплатформенные библиотеки 2D Drawing и VectorDrawing. Кроме того, библиотека VectorDrawing поддерживает альфа-прозрачность во всех своих операциях.
Кто то уже написал для векторной графики .tlb где универсальная, языконезависимая декларация?

А вот код в 20 строк, решающий проблему ТС с ватермарком на изображении + вращением изображения ватермарка.
Ни каких деклараций в коде, ни каких зависимостей, чистый EXE, работает даже на новой XP SP3 x86 на виртуалке.
Вложения
Тип файла: zip WaterMark.zip (187.3 Кб, 4 просмотров)
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
12.05.2020, 23:11
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Я очень этому рад! Что это меняет? Написал(а) Dana Seaman нам библиотеку и мы используем, а если не написал(а)?
Что меняет? А то что ничего не нужно декларировать, как я и написал изначально. А чтобы было если бы кто-то не написал GDI+ библиотеку для PureBasic (если такая вообще существует?), что бы было? Чтобы было если бы не было PureBasic'а? Что за вопрос-то? Мы говорим о том что есть, а не о том что было бы. А универсальная она потому что библиотека типов для этого и предназначена чтобы описывать сущности независимо от языка программирования.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Мне как то всё равно. У меня под рукой из коробки две отличные кроссплатформенные библиотеки 2D Drawing и VectorDrawing. Кроме того, библиотека VectorDrawing поддерживает альфа-прозрачность во всех своих операциях.
Ну и пользуйся, тебе что кто-то запрещает? Вопрос-то был не в этом. Во-первых, я написал что WIC и GDI+ более гибкие (к примеру поддерживают метаданные, различные опции декодирования и т.п., DirectX/Direct2D вообще аппаратно-ускорены), ты мне написал что в пурике их также можно применить и это якобы легче т.к. пурик знает все декларации и т.п. и не нужно ничего писать и декларировать вручную, я тебе скинул пример как это можно сделать в VB6 через библиотеку типов (подключил и пользуешься) ничего не объявляя и не декларируя. Но тебе что-то не нравится, хотя я даже на пурике не видел примера без декларирования. Во-вторых, ты влез с предложением заменить GDI+ в VB6 на PureBasic с его кроссплатформенными либами, хотя ТС спросил вообще про GdipSaveImageToFile в VB6. Для чего учить какой-то другой язык (вообще отдаленный от VB и от бейсика в общем), если эта же задача легко решается с использованием инструмента который был изначально использован?

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Кроме того, библиотека VectorDrawing поддерживает альфа-прозрачность во всех своих операциях.
Ну GDI+ тоже поддерживает прозрачность, Direct2D поддерживает прозрачность, WIC поддерживает прозрачность - все либы системные. Я даже не говорю о Cairo, которое также можно с легкостью использовать в VB6 через сторонние либы.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Кто то уже написал для векторной графики .tlb где универсальная, языконезависимая декларация?
А чем не устраивает эта библиотека?

Цитата Сообщение от Pro_grammer Посмотреть сообщение
А вот код в 20 строк, решающий проблему ТС с ватермарком на изображении + вращением изображения ватермарка.
Ни каких деклараций в коде, ни каких зависимостей, чистый EXE, работает даже на новой XP SP3 x86 на виртуалке.
Аналогичный код на VB6, чистый EXE, никаких зависимостей, работает даже на новой XP SP3 x86:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub Form_Load()
    Dim hToken  As Long, hImage As Long, hGraph As Long, _
        i As Long, tRc As RECTF, hFont As Long, hFill As Long, _
        hStringFmt As Long, tGpInput As GdiplusStartupInput
    tGpInput.GdiplusVersion = 1
    GdiplusStartup hToken, tGpInput: GdipLoadImageFromFile App.Path & "\432x276_3.Png", hImage
    GdipCreateFromHDC Me.hDC, hGraph: GdipDrawImageRectI hGraph, hImage, 0, 0, 800, 600
    GdipCreateFontFromDC Me.hDC, hFont: GdipCreateSolidFill &H64000000, hFill
    GdipStringFormatGetGenericTypographic hStringFmt: tRc.Width = 800: tRc.Height = 600
    For i = 0 To 11
        GdipResetWorldTransform hGraph
        GdipTranslateWorldTransform hGraph, 150, 0, MatrixOrderAppend
        GdipRotateWorldTransform hGraph, 30 * i, MatrixOrderAppend
        GdipTranslateWorldTransform hGraph, 400, 300, MatrixOrderAppend
        GdipDrawString hGraph, "WaterMark", -1, hFont, tRc, hStringFmt, hFill
    Next
    GdipDeleteStringFormat hStringFmt: GdipDeleteBrush hFill
    GdipDeleteFont hFont: GdipDeleteGraphics hGraph
    GdipDisposeImage hImage: GdiplusShutdown hToken
End Sub
Вложения
Тип файла: zip pb_comp.zip (168.4 Кб, 6 просмотров)
1
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
12.05.2020, 23:38
Цитата Сообщение от The trick Посмотреть сообщение
Аналогичный код на VB6,никаких зависимостей
Извини, но это опять лапша на уши. Вот твои зависимости:
Code
1
2
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\Windows\SysWOW64\stdole2.tlb#OLE Automation
Reference=*\G{3C4B4A34-9EF8-42A6-87A2-D2383DDC1EDB}#1.0#0#GdiPlus.tlb#GDI+ Type Library 1.05 (dseaman@uol.com.br)
Без них:


А я свой легко, нажатием одной кнопки!
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
12.05.2020, 23:57
Pro_grammer, не смеши форумчан. Это описание, точно также как и хидеры. Ты еще windows.h удали из студии и скажи что у тебя не компилируется. Не нужно дезинформировать людей. В скомпилированном виде все работает без зависимостей и ничего не требует работает шустрее чем в пурике . Аналогично я могу тебе сказать что ты вешаешь лапшу с пуриком который использует gdiplus.lib. Не нужно так делать, я дал нормальный проект который работает.
Зачем что-то ломать в проекте? Чтобы доказать что-то? Что именно и кому? Самому не смешно?
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,525
Записей в блоге: 22
13.05.2020, 06:30  [ТС]
Нашёл более продвинутую версию .tlb
Вложения
Тип файла: zip GDI+TLB.zip (75.3 Кб, 10 просмотров)
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
13.05.2020, 07:57
Цитата Сообщение от The trick Посмотреть сообщение
Чтобы доказать что-то?
Да, ты соврал вот тут:
Цитата Сообщение от The trick Посмотреть сообщение
А в примере который я дал нужны декларации? Или код длиннее аналогичного написанного на PureBasic?

Коду на VB6 + API нужны декларации. В случае твоего кода это самописная GDI+ Type Library 1.05.
Твоё же сообщение:
Цитата Сообщение от The trick Посмотреть сообщение
Это универсальная, языконезависимая декларация.
Декларация!!!
Без деклараций он не компилируется, а с ними гораздо длиннее.
Цитата Сообщение от The trick Посмотреть сообщение
Не нужно дезинформировать людей.
Вот вот, не нужно! Не смеши форумчан. Вставил декларацию в код и упираешься так, как будто её нет. И ладно бы человек, который не понимает, для чего какой файл в проекте нужен, я бы ещё понял, но от тебя точно не ожидал.

P.S.
Теперь допиши диалог выбора файла, как у меня. Родной диалог VB6 потребует Microsoft Common Dialog Control 6.0. Диалог на API потребует опять же декларации или новую Type Library.

Цитата Сообщение от Argus19 Посмотреть сообщение
Нашёл более продвинутую версию .tlb
Это было не сложно, после того, как я засветил тут адрес автора этой библиотеки.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
13.05.2020, 10:30
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Да, ты соврал вот тут:
Нет.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Коду на VB6 + API нужны декларации. В случае твоего кода это самописная GDI+ Type Library 1.05.
Декларации это то что пользователь декларирует когда использует какую либо API функцию через Declare (и соответствующие им структуры и константы). Использование готовой библиотеки типов в VB6 - это не декларации о которых ты говорил сравнивая с пуриком (Но опять же, это делать проще- многие константы и функции Пурик "знает", не нужны декларации, короче код - твое сообщение на мой ответ на использование WIC и GDI+). В VB6 это делается также просто, без всяких деклараций, на PureBasic - пока только на твоих словах. Я могу провести аналогию и сказать что пурик тоже использует декларации в lib файлах, но это некорректно с точки зрения семантики языка, поскольку lib это библиотека импорта, также как и tlb - это библиотека типов. Еще один момент, как я понял, в PureBasic нет прототипов для GDI+ и ему все же нужны декларации (именно декларации прототипов, констант и т.п.), хотя ты утверждал что не нужны. И не нужно сейчас "переобуваться" и говорить что ты имел в виду не то или что-то другое, я прекрасно знаю что ты имел в виду, а теперь хочешь "съехать" с темы. Я уже не говорю о попытках приравнять tlb и DLL, ну это вообще смех.
Третий момент, это то что я могу с легкостью доказать что ты ошибаешься просто сказав что все стандартные функции также объявлены в библиотеке типов:


Цитата Сообщение от Pro_grammer Посмотреть сообщение
Декларация!!!
Без деклараций он не компилируется, а с ними гораздо длиннее.
Ты не это имел в виду когда писал свой инициирующий пост. Я уже привел пример с декларациями пурика и несоответствия с твоими словами. Ты имел в виду декларации через Declare и т.п. декларациями как это делается при позднем связывании. Код который я дал (именно VB6 код) не получается ни длиннее, ни сложнее.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Вставил декларацию в код и упираешься так, как будто её нет.
Отвечу твоими словами:
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Ты разницу между написанием .tlb и написанием .bas кода знаешь?
Самому не смешно?

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Теперь допиши диалог выбора файла, как у меня. Родной диалог VB6 потребует Microsoft Common Dialog Control 6.0. Диалог на API потребует опять же декларации или новую Type Library.
Не вижу проблем подключить WIN32.tlb, и вызвать функцию GetOpenFileName. И опять ты пишешь - либо декларации, либо Type Library. А ну почему так? Не стыдно? А мне говорит...
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
13.05.2020, 10:50
Цитата Сообщение от Argus19 Посмотреть сообщение
Нашёл более продвинутую версию .tlb
На первый взгляд ничего "продвинутого" там нет. Продвинутая она была если бы там были эффекты (Blur, Sharpen, и др. стандартные GDI+).

Добавлено через 8 минут
Pro_grammer, я кстати хотел спросить у тебя одну вещь по пурику. Как VectorDrawing обрабатывает ошибки? У тебя в коде если какая-либо GDI+ функция фейлится, код продолжает выполняться как ни в чем не бывало и иногда падает с ошибкой доступа к памяти.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
13.05.2020, 11:00
Цитата Сообщение от The trick Посмотреть сообщение
подключить WIN32.tlb

У меня такое чувство, что я пытаюсь объяснить человеку, который не ел ни чего вкуснее морковки вкус шоколадной конфетки.

Поверь, есть такие современные ЯП, где не надо ни чего подключать! Просто сразу вызывай диалог выбора файла и всё. Загружай изображение и вставляй это изображение с нужной прозрачностью в нужное место. И ни каких деклараций, tlb, модулей bas.
Всё работает сразу и в основном коде. Вот такое чудо! Как конфетка!

Добавлено через 8 минут
Цитата Сообщение от The trick Посмотреть сообщение
У тебя в коде если какая-либо GDI+ функция фейлится, код продолжает выполняться как ни в чем не бывало и иногда падает с ошибкой доступа к памяти.
Там везде стоит проверка, уронить нереально.
Например StartVectorDrawing возвращает не нулевое значение, если вывод графики на данную поверхность (устройство) возможен (т.е. можно начать рисовать), и ноль, если эта поверхность для вывода графики не доступна (т.е. функции рисования работать не будут).
То же и LoadImage возвращает не нулевое значение, если изображение было успешно загружено, в противном случае ноль.
P.S.
Только я понятия не имею, на чем основана библиотека VectorDrawing, вряд ли на GDI+. Векторная графика круче, 2D либа может быть.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
13.05.2020, 12:19
Цитата Сообщение от Pro_grammer Посмотреть сообщение
У меня такое чувство, что я пытаюсь объяснить человеку, который не ел ни чего вкуснее морковки вкус шоколадной конфетки.
У меня кстати тоже.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Поверь, есть такие современные ЯП, где не надо ни чего подключать! Просто сразу вызывай диалог выбора файла и всё. Загружай изображение и вставляй это изображение с нужной прозрачностью в нужное место. И ни каких деклараций, tlb, модулей bas.
Всё работает сразу и в основном коде. Вот такое чудо! Как конфетка!
Я не спорил с этим, я об этом прекрасно знаю, но за такую универсальность ты платишь меньшей гибкостью, о чем я и написал в самом начале. Аналогично я могу тебе привести пример языков где нативная поддержка COM и ActiveX, и не нужно никаких утилит типа OLE/COM Interface generator, где есть CreateObject и можно любой объект создать парой строчек.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Там везде стоит проверка, уронить нереально.
Я полагаюсь только на твой код (EXE файл). Библиотека VectorDrawing "под капотом" использует GDI+, так вот, если GdiplusStartup зафейлится - твой код упадет. Если изображение не удалось создать (GdipCreateBitmapFromGdiDib) - код продолжит выполняться и никакой ошибки не будет. Никаких проверок нет.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Только я понятия не имею, на чем основана библиотека VectorDrawing, вряд ли на GDI+. Векторная графика круче, 2D либа может быть.
Не круче, она по определению не может быть круче т.к. основана на GDI+ и не поддерживает всех возможностей этой библиотеки; также она не может быть быстрее т.к. вызывает те же самые функции но через прослойку. Так что не надо.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
13.05.2020, 17:00
Цитата Сообщение от The trick Посмотреть сообщение
если GdiplusStartup зафейлится - твой код упадет.
Как ты смоделировал такую ситуацию в ехе? Я даже не знаю, где там GdiplusStartup, если внутри StartVectorDrawing, то там проверка на нулевое значение.
Цитата Сообщение от The trick Посмотреть сообщение
т.к. основана на GDI+
Для Винды наверно да, ты прав.
Но есть ещё Linux и MacOS! Мой код там тоже работает

Вообще, представляешь, как это круто, можно пользоваться всеми плюшками и даже не задумываться о том, как это устроено, не искать по интернетам декларации, ждать когда кто то напишет .tlb
Можно просто нажать F1 и прочитать всё, что тебя интересует в документации на библиотеку.
Цитата Сообщение от The trick Посмотреть сообщение
не поддерживает всех возможностей этой библиотеки
А уж если вдруг чего не хватило, то можно всегда обратиться к источнику. Но пока такого желания у меня не возникало.
Я и встроенных возможностей на 50% не использую
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
13.05.2020, 17:59
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Как ты смоделировал такую ситуацию в ехе?
Просто сделал так чтобы функция отработала с ошибкой через отладчик.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Я даже не знаю, где там GdiplusStartup, если внутри StartVectorDrawing, то там проверка на нулевое значение.
Не знаю как происходит трансляция в PB, просто я вижу в импорте GdiplusStartup и смотрю какие вызовы идут, и если функция возвращает ошибку это никак не обрабатывается.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Но есть ещё Linux и MacOS! Мой код там тоже работает
Какая разница? Я не обсуждаю другую платформу, хотя 100% уверен что для линукса там cairo юзается.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Вообще, представляешь, как это круто, можно пользоваться всеми плюшками и даже не задумываться о том, как это устроено, не искать по интернетам декларации, ждать когда кто то напишет .tlb
Можно просто нажать F1 и прочитать всё, что тебя интересует в документации на библиотеку.
Ну да, круто, но мне это не надо, особенно в этом разделе. Да и вообще сейчас море фреймворков на которых можно писать кроссплатформенный код, но не на VB6.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
А уж если вдруг чего не хватило, то можно всегда обратиться к источнику. Но пока такого желания у меня не возникало.
К какому источнику?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
13.05.2020, 18:15
Цитата Сообщение от The trick Посмотреть сообщение
Просто сделал так чтобы функция отработала с ошибкой через отладчик.
Ну удивил, через отладчик Через отладчик можно любой софт уронить, на то он и отладчик.
Ты реально попробуй создать такую ситуацию, подсунь ему изображение или любой другой файл, на котором он упадет, тогда и поговорим. А пока это детский лепет.

Цитата Сообщение от The trick Посмотреть сообщение
К какому источнику?
GDI+, как ты выяснил.

Теперь смотри, ещё один фокус:


Я изменил надпись с латиницы на хинди "यह तस्वीर कानून द्वारा संरक्षित है।"
Можешь вставить это сюда и такой трюк провернуть на VB6?:
Visual Basic
1
GdipDrawString hGraph, "WaterMark", -1, hFont, tRc, hStringFmt, hFill
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
13.05.2020, 20:32
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Ну удивил, через отладчик Через отладчик можно любой софт уронить, на то он и отладчик.
Ты реально попробуй создать такую ситуацию, подсунь ему изображение или любой другой файл, на котором он упадет, тогда и поговорим. А пока это детский лепет.
Пфф... Ты не заметил что GdiplusStartup имеет возвращаемое значение? Почему PureBasic его не проверяет? Ты считаешь это нормальным? Такая ситуация вполне может произойти по какой-либо причине в обычном режиме работы приложения.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
GDI+, как ты выяснил.
Ну и что, я был не прав что GDI+ мощнее? Кстати ты так и не предъявил код работы с GDI+ на PureBasic без деклараций как ты говорил.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Я изменил надпись с латиницы на хинди "यह तस्वीर कानून द्वारा संरक्षित है।"
Редактор кода VB6, IDE и встроенные контролы не поддерживают юникод. При желании можно через ChrW посимвольно определить строку типа:
Visual Basic
1
2
3
4
5
ChrW$(2351) & ChrW$(2361) & ChrW$(32) & ChrW$(2340) & ChrW$(2360) & ChrW$(2381) & ChrW$(2357) & ChrW$(2368) & _
            ChrW$(2352) & ChrW$(32) & ChrW$(2325) & ChrW$(2366) & ChrW$(2344) & ChrW$(2370) & ChrW$(2344) & ChrW$(32) & _
            ChrW$(2342) & ChrW$(2381) & ChrW$(2357) & ChrW$(2366) & ChrW$(2352) & ChrW$(2366) & ChrW$(32) & ChrW$(2360) & _
            ChrW$(2306) & ChrW$(2352) & ChrW$(2325) & ChrW$(2381) & ChrW$(2359) & ChrW$(2367) & ChrW$(2340) & ChrW$(32) & _
            ChrW$(2361) & ChrW$(2376) & ChrW$(2404)

Не пойму зачем ты это написал в этой теме? Обычно в исходных кодах не используют юникодные строки подобного типа.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
13.05.2020, 21:12
Цитата Сообщение от The trick Посмотреть сообщение
Не пойму зачем ты это написал в этой теме?
Интересно, как решается эта проблема в VB6. Понятно, что всё надо ручками делать, манифест для морды, поддержку DPI чтоб на все разрешения подогнать, контролы написать, чтобы юникод поддерживали, найти в интернете .tlb, что бы руками декларации не писать и тп.
Цитата Сообщение от The trick Посмотреть сообщение
, я был не прав что GDI+ мощнее?
Мощнее чего? Мощнее обёртки над самим собой? Даже и не смешно.

Цитата Сообщение от The trick Посмотреть сообщение
GDI+ на PureBasic без деклараций
Это и есть работа без деклараций. Где то были в моём коде декларации?
А если хочешь, что бы я как ты, с интернета приинклюдил левый файл в проект? Могу и так, но смысл?

Цитата Сообщение от The trick Посмотреть сообщение
Такая ситуация вполне может произойти по какой-либо причине в обычном режиме работы приложения.
Очередная клюква. Ну создай такую ситуацию, зачем говорить если не можешь сделать! Программа у тебя есть, давай входной файл, на котором она упадет.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
13.05.2020, 22:00
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Интересно, как решается эта проблема в VB6.
Но эта тема не подходит для обсуждения данного вопроса, и ты, я думаю, и без меня знаешь ответ.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Понятно, что всё надо ручками делать, манифест для морды, поддержку DPI чтоб на все разрешения подогнать, контролы написать, чтобы юникод поддерживали, найти в интернете .tlb, что бы руками декларации не писать и тп
Давай не будем поднимать эту тему. Я также могу тебе привести аналогично для твоего любимого языка, работа с COM, работа с ActiveX контролами, внепроцессными серверами, составными документами, найти декларации для GDI+ и т.п. Не нужно. Если хочешь - создай отдельную тему, там и поговорим об этом.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Мощнее чего? Мощнее обёртки над самим собой? Даже и не смешно.
Ты хоть понял что сам написал? Я написал GDI+ мощнее встроенной либы PureBasic. А что ты написал?

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Это и есть работа без деклараций. Где то были в моём коде декларации?
Ты не работал с GDI+, ты работал с библиотекой которая "под капотом" использует GDI+. Разницу понимаешь? Дав тебе задачу касательно возможностей GDI+ которые не реализованы в VectorDrawings (я не знаток PB, но я думаю там не реализованы например цветовые матрицы), вот тут ты не сможешь ничего сделать кроме как руками написать декларации для GDI+, про которые ты говорил что они не нужны. К примеру, попробуй открыть у себя прикрепленный PNG файл в своем EXE, а потом в моем:

Мой отображает картинку, твой - нет.

Цитата Сообщение от Pro_grammer Посмотреть сообщение
А если хочешь, что бы я как ты, с интернета приинклюдил левый файл в проект? Могу и так, но смысл?
Нет я хочу чтобы ты работал с GDI+ как и я и доказал свои слова:
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Ни что не мешает их использовать в PureBasic. Но опять же, это делать проще- многие константы и функции Пурик "знает", не нужны декларации, короче код.
Пока ничего не было

Цитата Сообщение от Pro_grammer Посмотреть сообщение
Очередная клюква. Ну создай такую ситуацию, зачем говорить если не можешь сделать! Программа у тебя есть, давай входной файл, на котором она упадет.
Все понятно с тобой. Не вижу смысла обсуждать эту ветку дискуссии дальше.
Вложения
Тип файла: zip Безымянный-1.zip (3.1 Кб, 2 просмотров)
0
14.05.2020, 06:02

Не по теме:

Цитата Сообщение от The trick Посмотреть сообщение
Не вижу смысла обсуждать эту ветку дискуссии дальше
Ясно, пытался уронить мой exe шник, создал хитрый png файл, но exeшник просто его проигнорировал, а не упал :)
И ты обиделся... Не обижайся, VB6 во многих вещах лучше PureBasicа, а ты, вне всяких сомнений, самый выдающийся программист, который умеет делать на VB6 чудеса, я всегда это говорю при любом удобном случае.
Ок, закрываем дискуссию.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.05.2020, 06:02
Помогаю со студенческими работами здесь

Picture Box
как сделать так, чтобы один PictureBox был поверх другого??? вот пример на картинке.

Отображение Picture Box
У меня есть два Picture Box, расположенных "вплотную". Но когда я запускаю программу, изображения, которые находятся в них, отображаются...

работать с picture box
Как вывести в picture box текст в определенных координатах и линию с одной заданой точки в другую?

перемещение элипса на picture box
как можно сделать, анимацию чтоли, короче чтобы элипс по прямой прошел, ?

Инструмент рука в Picture Box
Возникла задача сделать такой инструмент. Есть Picture Box в котором рисуется график функции, хочу увеличивать картинку и рассматривать в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru