>> 約 640 * 480 のサイズのイメージをhsp のスクリーンに向かって 一秒間に 30 回コピーする。
a2d.hsp の内部をのぞいてみたところ。
どうやら、hsp ユーザーがとっつきやすいように、色々と技巧が凝らして有るようです。
とても使いやすいのですが、私的には、もっと速度と、Cpu の付加を抑えたいと思うので、
そのために、必要な部分のみを抜き出そうとしているのですが、うまくいきません。
画面に反映されない状態です。
下がそのスクリプトです。a2d.hsp からの コピペが多いですが多めに見てくれると嬉しいです。
#uselib "gdiplus" #func GdiplusStartup "GdiplusStartup" var , var , int #func GdiplusShutdown "GdiplusShutdown" int #func GdipCreateBitmapFromScan0 "GdipCreateBitmapFromScan0" int, int, int, int, int, int #func GdipGetImageGraphicsContext "GdipGetImageGraphicsContext" int, int #func GdipCreateSolidFill "GdipCreateSolidFill" int, int #func GdipCreatePen2 "GdipCreatePen2" int, float, int, int #func GdipDisposeImage "GdipDisposeImage" int #func GdipDeleteGraphics "GdipDeleteGraphics" int #func GdipDeleteBrush "GdipDeleteBrush" int #func GdipDeletePen "GdipDeletePen" int #func GdipFillRectangleI "GdipFillRectangleI" int, int, int, int, int, int #func GdipCreateFromHDC "GdipCreateFromHDC" int, int #func GdipDrawImageRectRectI "GdipDrawImageRectRectI" int, int, int, int, int, int, int, int, int, int, int, int, int, int #func GdipSetSmoothingMode "GdipSetSmoothingMode" int, int #func GdipSetPixelOffsetMode "GdipSetPixelOffsetMode" int, int #func GdipSetCompositingQuality "GdipSetCompositingQuality" int, int #func GdipSetTextRenderingHint "GdipSetTextRenderingHint" int, int #func GdipSetCompositingMode "GdipSetCompositingMode" int, int #func GdipSetWorldTransform "GdipSetWorldTransform" int, int ; PixelFormat #const PixelFormatGDI 0x00020000 // Is a GDI-supported format #const PixelFormatAlpha 0x00040000 // Has an alpha component #const PixelFormatCanonical 0x00200000 #const PixelFormat24bppRGB (8 | (24 << 8) | PixelFormatGDI) #const PixelFormat32bppARGB (10 | (32 << 8) | PixelFormatAlpha | PixelFormatGDI | PixelFormatCanonical) #enum UnitWorld = 0 // 0 -- World coordinate (non-physical unit) #enum UnitDisplay // 1 -- Variable -- for PageTransform only #enum UnitPixel // 2 -- Each unit is one device pixel. onexit *exit GdiplusStartup gdipToken , gdiSi , 0 GdipCreateBitmapFromScan0 100 , 100 , 0, PixelFormat32bppARGB, 0, varptr(imgImage) GdipGetImageGraphicsContext imgImage, varptr(hic) GdipSetSmoothingMode hic, 2 ; SmoothingModeHighQuality = QualityModeHigh GdipSetPixelOffsetMode hic, 2 ; PixelOffsetModeHighQuality = QualityModeHigh GdipSetTextRenderingHint hic, 4 ; TextRenderingHintAntiAlias GdipCreateSolidFill 0xF0FFA2B0, varptr(imgBrush) GdipCreatePen2 imgBrush, 1, UnitPixel , varptr(imgPen) GdipFillRectangleI hic , imgBrush , 0,0 , 100,100 GdipCreateFromHDC hdc , varptr(tmpGraphics) GdipDrawImageRectRectI tmpGraphics, imgImage, 0 , 0 , 100 , 100 , 0 , 0 , 100, 100, UnitPixel, 0 , 0, 0 redraw 1 stop *exit GdipDeleteGraphics tmpGraphics ; tmpGraphics を削除 GdipDisposeImage imgImage ; Image を処分 GdipDeleteGraphics hic ; Graphics を削除 GdipDeleteBrush imgBrush ; Brush を削除 GdipDeletePen imgPen ; Pen を削除 GdiplusShutdown gdipToken end
それと gdi+ に関する、情報が詳しく載っているサイトは、どこかに有りますでしょうか?
色々探しましたが見つからない状態です。