HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2025
0807
HokutoalStretch系統でハーフトーンを利用しないでコピーしたい5解決


Hokuto

リンク

2025/8/7(Thu) 18:31:28|NO.103800

alStretchImageToScreenでドット絵を拡大コピーしたいのですが、ハーフトーンを利用しているときのようにぼやけてしまいます。
gzoomのようにピクセルを維持したままコピーしたいのですが、どうしたらうまくできますか?
透過情報を維持したままコピーしたいので、gzoomでは足りず、、、



この記事に返信する


usagi

リンク

2025/8/7(Thu) 20:07:30|NO.103801

こんにちわ
a2d(GDI+)にはグラフィックに対して補間モードを設定できるのですが、
このモジュールの場合、内部にアクセスして拡張する形でないと難しいですね。。。
よろしかったらどうぞ。

#include "a2d.hsp" ;★追加 #module a2dEx #uselib "gdiplus" #func GdipSetInterpolationMode "GdipSetInterpolationMode" int, int #deffunc alStretchImageToScreenNN int p2, int p1, int psx, int psy, int psw, int psh, int pdx, int pdy, int pdw, int pdh if imgValidArr@a2d(p2) { gsel p1 GdipCreateFromHDC@a2d hdc, varptr(tmpGraphics@a2d) if tmpGraphics@a2d { GdipSetInterpolationMode tmpGraphics@a2d, 5 ; ★最近傍補間(InterpolationModeNearestNeighborモード)ホントはここだけ追加したい GdipDrawImageRectRectI@a2d tmpGraphics@a2d, imgImageArr@a2d(p2), pdx, pdy, pdw, pdh, psx, psy, psw, psh, UnitPixel@a2d, pImageAttr@a2d, 0, 0 GdipDeleteGraphics@a2d tmpGraphics@a2d tmpGraphics@a2d = 0 return 0 } } return -1 #global ;★ここまで screen 0, 1024, 512 alCreateImage 0, 512, 512 if stat = -1 : dialog "GDI+ を初期化できませんでした。" : end alCreateImage 1, 128, 128 alLoadFile dir_exe+"\\hsptv\\tamane16.png" alStretchImageToScreen 1, 0, 0, 0, 128, 128, 0, 0, 512, 512 alStretchImageToScreenNN 1, 0, 0, 0, 128, 128, 512, 0, 512, 512 redraw



Hokuto

リンク

2025/8/17(Sun) 12:02:24|NO.103832

自宅のネット環境がやられて返信が遅くなってしまいました、、、
このコードを参考に、alStretchImageToImageの方もモード変更をすることができました!
やりたかったことが実装できて助かりました、ありがとうございました!



窓月らら

リンク

2025/8/17(Sun) 23:10:10|NO.103833

いいですねー♪ お礼に定数置いておきますね。

#define InterpolationModeInvalid -1 // 無効な補間モード #define InterpolationModeDefault 0 // 既定の補間モード(通常は Bilinear) #define InterpolationModeLowQuality 1 // 低品質補間 #define InterpolationModeHighQuality 2 // 高品質補間 #define InterpolationModeBilinear 3 // 双一次補間(Bilinear) #define InterpolationModeBicubic 4 // 双三次補間(Bicubic) #define InterpolationModeNearestNeighbor 5 // 最近傍補間(Nearest Neighbor) #define InterpolationModeHighQualityBilinear 6 // 高品質双一次補間 #define InterpolationModeHighQualityBicubic 7 // 高品質双三次補間
これを指定できる命令を追加すればよさそうですね。



窓月らら

リンク

2025/8/18(Mon) 00:05:33|NO.103834

オリジナルのa2dのほうが著作権フリーとありましたので・・・
勝手ながら改造させて頂きましたので、こちらも著作権フリーとして公開しちゃいます。
問題あったら言ってね。
https://miecat.com/hsp/arc/a2d_alinterpolationmode.zip

alInterpolationMode p1
p1: モード値(0)

という命令が加わってます。
ソースをご覧ください・・・



窓月らら

リンク

2025/8/18(Mon) 17:06:24|NO.103835

上記更新しました。機能的には同じです、、、
alInterpolationMode をマクロ命令に変更。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.103800への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2025(c) All rights reserved.