<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408457&amp;view=findpost&amp;p=3662058</guid>
        <pubDate>Mon, 28 Mar 2016 15:47:42 +0000</pubDate>
        <title>GDI+ не сохраняется картинка в файл</title>
        <link>https://forum.sources.ru/index.php?showtopic=408457&amp;view=findpost&amp;p=3662058</link>
        <description><![CDATA[#SI#: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp;Gdiplus::Pen pen(Gdiplus::Color(96, 0, 0, 255)); &nbsp; // alpha, red, green, blue</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>#SI#</author>
        <category>Прочие языки программирования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408457&amp;view=findpost&amp;p=3662013</guid>
        <pubDate>Mon, 28 Mar 2016 10:57:41 +0000</pubDate>
        <title>GDI+ не сохраняется картинка в файл</title>
        <link>https://forum.sources.ru/index.php?showtopic=408457&amp;view=findpost&amp;p=3662013</link>
        <description><![CDATA[vazzzzz: Разобрался вроде с загрузкой и сохранением. Если кто знает как средствами GDI+ задать определенному цвету значение альфы? (чтобы сделать его полупрозрачным)]]></description>
        <author>vazzzzz</author>
        <category>Прочие языки программирования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408457&amp;view=findpost&amp;p=3661985</guid>
        <pubDate>Mon, 28 Mar 2016 06:37:55 +0000</pubDate>
        <title>GDI+ не сохраняется картинка в файл</title>
        <link>https://forum.sources.ru/index.php?showtopic=408457&amp;view=findpost&amp;p=3661985</link>
        <description><![CDATA[vazzzzz: <strong class='tag-b'>JoeUser</strong> вопрос всё таки по работе Win API (GDI+)...? Сам код на основе Lua конечно.]]></description>
        <author>vazzzzz</author>
        <category>Прочие языки программирования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408457&amp;view=findpost&amp;p=3661974</guid>
        <pubDate>Mon, 28 Mar 2016 05:32:09 +0000</pubDate>
        <title>GDI+ не сохраняется картинка в файл</title>
        <link>https://forum.sources.ru/index.php?showtopic=408457&amp;view=findpost&amp;p=3661974</link>
        <description><![CDATA[JoeUser: <div class="tag-mod"><div class="tag-mod__prefix">M</div><div class="tag-mod__body">Представленный код - не на языках C/C++ &#40;вероятно, Lua?&#41;. <br>
Поэтому переезжаем?</div></div>]]></description>
        <author>JoeUser</author>
        <category>Прочие языки программирования</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=408457&amp;view=findpost&amp;p=3661971</guid>
        <pubDate>Mon, 28 Mar 2016 04:01:26 +0000</pubDate>
        <title>GDI+ не сохраняется картинка в файл</title>
        <link>https://forum.sources.ru/index.php?showtopic=408457&amp;view=findpost&amp;p=3661971</link>
        <description><![CDATA[vazzzzz: По ряду причин необходимо сделать простенькое приложение в AutoPlay Media Studio - конвертер изображений. Согласно представленному <a class='tag-url' href='http://здесь' target='_blank'>здесь</a> примеру набросал код:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">gdiplusToken = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">-- exit application</div><div class="code_line">function AppExit()</div><div class="code_line">&nbsp;&nbsp; &nbsp;-- free image</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (image and MemoryEx.DWORD(image) ~= 0) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GDIE_STATE = GDI.GdipDisposeImage(image);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (GDIE_STATE ~= GDI_OK) then Dialog.Message(&quot;GDI error&quot;, &quot;GdipDisposeImage: &quot; .. GDI_ERROR[GDIE_STATE]); end</div><div class="code_line">&nbsp;&nbsp; &nbsp;end</div><div class="code_line">&nbsp;&nbsp; &nbsp;-- shutdown GDI+</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (gdiplusToken ~= 0) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GDIE_STATE = GDI.GdiplusShutdown(gdiplusToken);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (GDIE_STATE ~= GDI_OK) then Dialog.Message(&quot;GDI error&quot;, &quot;GdiplusShutdown: &quot; .. GDI_ERROR[GDIE_STATE]); end</div><div class="code_line">&nbsp;&nbsp; &nbsp;end</div><div class="code_line">&nbsp;&nbsp; &nbsp;-- free some memory</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (zero) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; then MemoryEx.Free(zero); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (pfilePNG) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; then MemoryEx.Free(pfilePNG); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (pCLSID) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; then MemoryEx.Free(pCLSID); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (pstrCLSID) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;then MemoryEx.Free(pstrCLSID); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (image) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;then MemoryEx.Free(image); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (pfileBMP) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; then MemoryEx.Free(pfileBMP); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (pgdiplusStartupInput) then MemoryEx.Free(pgdiplusStartupInput); end</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (pgdiplusToken) &nbsp; &nbsp; &nbsp; &nbsp;then MemoryEx.Free(pgdiplusToken); &nbsp; &nbsp; &nbsp; &nbsp;end</div><div class="code_line">&nbsp;&nbsp; &nbsp;Window.Close(Application.GetWndHandle(), CLOSEWND_TERMINATE);</div><div class="code_line">end</div><div class="code_line">&nbsp;</div><div class="code_line">-- loading libraries</div><div class="code_line">OLE = Library.Load(&quot;OLE32.dll&quot;);</div><div class="code_line">GDI = Library.Load(&quot;GDIPLUS.dll&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">-- GDI+ error codes</div><div class="code_line">GDI_OK &nbsp; &nbsp;= 0;</div><div class="code_line">GDI_STATE = 0;</div><div class="code_line">GDI_ERROR = {&quot;GenericError&quot;, &quot;InvalidParameter&quot;, &quot;OutOfMemory&quot;, &quot;ObjectBusy&quot;, &quot;InsufficientBuffer&quot;, &quot;NotImplemented&quot;, &quot;Win32Error&quot;, &quot;WrongState&quot;, &quot;Aborted&quot;, &quot;FileNotFound&quot;, &quot;ValueOverflow&quot;, &quot;AccessDenied&quot;, &quot;UnknownImageFormat&quot;, &quot;FontFamilyNotFound&quot;, &quot;FontStyleNotFound&quot;, &quot;NotTrueTypeFont&quot;, &quot;UnsupportedGdiplusVersion&quot;, &quot;GdiplusNotInitialized&quot;, &quot;PropertyNotFound&quot;, &quot;PropertyNotSupported&quot;, &quot;ProfileNotFound&quot;};</div><div class="code_line">&nbsp;</div><div class="code_line">-- define file paths</div><div class="code_line">local fileBMP = _SourceFolder .. &quot;\AutoPlay\Images\i.bmp&quot;</div><div class="code_line">local filePNG = _SourceFolder .. &quot;\AutoPlay\Images\o.png&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">-- pointer to GDI+ Token</div><div class="code_line">pgdiplusToken = MemoryEx.Allocate(4);</div><div class="code_line">-- define structure gdiplusStartupInput </div><div class="code_line">local gdiplusStartupInput = MemoryEx.DefineStruct{UDWORD (&quot;GdiplusVersion&quot;); UDWORD (&quot;DebugEventCallback&quot;); BYTE (&quot;SuppressBackgroundThread&quot;); BYTE (&quot;SuppressExternalCodecs&quot;);};</div><div class="code_line">-- create structure gdiplusStartupInput</div><div class="code_line">local hgdiplusStartupInput = gdiplusStartupInput:New();</div><div class="code_line">-- fill structure gdiplusStartupInput</div><div class="code_line">hgdiplusStartupInput.GdiplusVersion &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = 1;</div><div class="code_line">hgdiplusStartupInput.DebugEventCallback &nbsp; &nbsp; &nbsp; = 0;</div><div class="code_line">hgdiplusStartupInput.SuppressBackgroundThread = false;</div><div class="code_line">hgdiplusStartupInput.SuppressExternalCodecs &nbsp; = false;</div><div class="code_line">-- pointer to structure gdiplusStartupInput </div><div class="code_line">pgdiplusStartupInput = hgdiplusStartupInput:GetPointer();</div><div class="code_line">&nbsp;</div><div class="code_line">-- init GDI+</div><div class="code_line">GDIE_STATE = GDI.GdiplusStartup(pgdiplusToken, pgdiplusStartupInput, 0);</div><div class="code_line">if (GDIE_STATE ~= GDI_OK) then Dialog.Message(&quot;GDI error&quot;, &quot;GdiplusStartup: &quot; .. GDI_ERROR[GDIE_STATE]); Window.Close(Application.GetWndHandle(), CLOSEWND_TERMINATE); end</div><div class="code_line">gdiplusToken = MemoryEx.DWORD(pgdiplusToken);</div><div class="code_line">if (gdiplusToken == 0) then Dialog.Message(&quot;GDI error&quot;, &quot;gdiplusToken: 0&quot;); Window.Close(Application.GetWndHandle(), CLOSEWND_TERMINATE); end</div><div class="code_line">&nbsp;</div><div class="code_line">-- path to source image file (Unicode, NULL terminated)</div><div class="code_line">pfileBMP = MemoryEx.Allocate(String.Length(fileBMP) * 2 + 1);</div><div class="code_line">MemoryEx.String(pfileBMP, -1, MEMEX_UNICODE, fileBMP);</div><div class="code_line">image = MemoryEx.Allocate(4);</div><div class="code_line">-- loading source image</div><div class="code_line">GDIE_STATE = GDI.GdipLoadImageFromFile(pfileBMP, image);</div><div class="code_line">if (GDIE_STATE ~= GDI_OK) then Dialog.Message(&quot;GDI error&quot;, &quot;GdipLoadImageFromFile: &quot; .. GDI_ERROR[GDIE_STATE]); AppExit(); end</div><div class="code_line">&nbsp;</div><div class="code_line">-- get PNG encoder ID</div><div class="code_line">local strCLSID &nbsp;= &quot;{557CF406-1A04-11D3-9A73-0000F81EF32E}&quot;;</div><div class="code_line">pstrCLSID = MemoryEx.Allocate(String.Length(strCLSID) * 2 + 1);</div><div class="code_line">MemoryEx.String(pstrCLSID, -1, MEMEX_UNICODE, strCLSID);</div><div class="code_line">pCLSID = MemoryEx.Allocate(16);</div><div class="code_line">GDIE_STATE = OLE.CLSIDFromString(pstrCLSID, pCLSID);</div><div class="code_line">if (GDIE_STATE ~= GDI_OK) then Dialog.Message(&quot;OLE32 error&quot;, &quot;CLSIDFromString: &quot; .. GDIE_STATE); AppExit(); end</div><div class="code_line">-- pCLSID is a pointer to 16-bytes binary encoder ID, must be 0x06F47C55041AD3119A730000F81EF32E (checked)</div><div class="code_line">&nbsp;</div><div class="code_line">-- path to output image file (Unicode, NULL terminated)</div><div class="code_line">pfilePNG = MemoryEx.Allocate(String.Length(filePNG) * 2 + 1);</div><div class="code_line">MemoryEx.String(pfilePNG, -1, MEMEX_UNICODE, filePNG);</div><div class="code_line">zero = MemoryEx.Allocate(4); -- pointer to constant [DWORD] = 0, info here http://www.vbforums.com/showthread.php?663593.html</div><div class="code_line">-- save image as PNG-file</div><div class="code_line">GDIE_STATE = GDI.GdipSaveImageToFile(image, pfilePNG, pCLSID, zero);</div><div class="code_line">if (GDIE_STATE ~= GDI_OK) then Dialog.Message(&quot;GDI error&quot;, &quot;GdipSaveImageToFile: &quot; .. GDI_ERROR[GDIE_STATE]); AppExit(); end</div><div class="code_line">Dialog.Message(&quot;GDI&quot;, &quot;PNG file saved!&quot;);</div></ol></div></div></div></div><br>
<br>
Но функции GdipSaveImageToFile и в дальнейшем GdipDisposeImage возвращают код ошибки ObjectBusy. Подскажите, пожалуйста, что может быть не так?]]></description>
        <author>vazzzzz</author>
        <category>Прочие языки программирования</category>
      </item>
	
      </channel>
      </rss>
	