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


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0621
アキアキノヒロロ[hgimg4] で使えない [pget] 同様のことは、どうやったらできるのか7解決


アキアキノヒロロ

リンク

2022/6/21(Tue) 13:10:24|NO.96692

[hgimg4] に取り込んだ画像で、[pget] 同様のことをやれれば、
[E3D] の機能の、画像による高度/進路設定を、[hgimg4]でも
出来るようになると思うのですが。
どうやったら、それが可能になるでしょうか。



この記事に返信する


ギバロウ

リンク

2022/6/21(Tue) 18:54:02|NO.96695

バックバッファにbmpを読み込み、そのbmpをテキストファイルに変換し、色情報をデータとしてゲットすれば可能かと思われます。
ただ、bmpのファイル構造は知っておく必要があります。
過去の掲示板を参照いただければ、と。
http://hsp.tv/play/pforum.php?mode=pastwch&num=30152



zrs90(5さい)

リンク

2022/6/21(Tue) 21:08:15|NO.96697

今年の春先に、hgimg4のダイアログ命令を実装する
件で、TOMATO さんから教えて頂きましたが

Windows版Dishに限っては外部DLLが読める
...と言う事なので近い動作が

http://hsp.tv/play/pforum.php?mode=pastwch&num=20974

#20985のソースを直せば出来るかも。


一応、サンプルのbuffer.hsp
に追加して少し直したら、マウスカーソル
下の色を、タイトルバーに表示出来ました。



usagi

リンク

2022/6/21(Tue) 21:44:59|NO.96699

hgimg4だけで行いたいのであれば用途は限られると思いますが、cellbitmapで色要素にはアクセスできると思います。

#include "hgimg4.as" gpreset : setcls CLSMODE_SOLID, 0 chdir dir_exe+"\\sample\\hgimg4" buffer 2, 640, 200, screen_offscreen celload "hsp3dish.png", 2 dim vram, ginfo_sx*ginfo_sy *MAIN celbitmap 2, vram, celbitmap_capture pcol = vram(limit(mousex+(200-mousey)*640,0,length(vram)-1)) col = (pcol>>24) & $FF, (pcol>>16) & $FF, (pcol>>8) & $FF, pcol & $FF gsel 0 redraw 0 pos 0,0 : celput 2 pos mousex, mousey color col.3, col.2, col.1 : mes strf(" 色は(%3d,%3d,%3d)", col.3, col.2, col.1), 4 boxf mousex+20, mousey+20, mousex+60, mousey+60 redraw 1 await 32 goto *MAIN

ただ、hgimg4はマルチプラットフォームを目的に作られていると思いますので、
互換性がなくなってしまいますから、ギバロウさんの発想に近いかもしれませんが、
高度/進路設定として使いたいのであれば、
通常のhspでpicloadしてpgetしたデータを都合よく加工してbsaveしたデータをhgimg4でbloadした方が
良いかとは思います。
(画像そのままを使う必要は無い発想です)



アキアキノヒロロ

リンク

2022/6/21(Tue) 23:00:54|NO.96700

ギバロウ さん、有難うございます。

ツイッターで、冷茶猫 さんから、[celbitmap] を教えて頂き、色々考えていたところでした。
読み込んだ画像をどうやったら、この[celbitmap] の対象にできるのだろうか、と。
画像を色の配列変数だと考えればいいのだろうことは、予想がたっていましたが、
具体的にどうやるのか、思い付きませんでした。

ギバロウ さん御紹介の掲示板、きっとそのいい参考になるだろうと、開いてみましたが、
スレッド内の次のリンク先、なくなっていました。
mbase64
http://homepage2.nifty.com/MJHS/dotou_hsp/module/mbase64_100.lzh

http://dev.onionsoft.net/trac/changeset/360

inovia さんの NO.30153 のものを使って、どうにか出来ないか、やってみています。
ちょっと、手間取りそうですが、なんとかしたいと思っています。

情報、有難うございます。



アキアキノヒロロ

リンク

2022/6/21(Tue) 23:58:16|NO.96701

zrs90(5さい) さん、usagi さん、レスが前後して申し訳ありませんでした。

> zrs90(5さい) さん
[buffer.hsp] に、[#20985のソース by とおりすがり さん] で、私も作って
試したところ、同様にうまくいきました。

> usagi さん
思っていた通りのことが実現されていて驚きです。
そして、確かに「高度/進路設定として使う」という目的ならば、
「画像そのままを使う必要は無い発想」でいいのであって、ギバロウさんの発想で、
前もって、picloadしてpgetしたデータを準備しておけば済む話ですね。

皆さん、有難うございました。



アキアキノヒロロ

リンク

2022/6/22(Wed) 08:26:30|NO.96703

> [hgimg4] に取り込んだ画像で、[pget] 同様のことを
という、当初の形のプログラムを組んでみました。

題して、『celbitmap=by_usagiさん+選択ダイアログ=by_TOMATOさん.hsp』

#include "hgimg4.as" #uselib "Comdlg32.DLL" #func GetOpenFileName "GetOpenFileNameA" int #define BUFSIZE 260 #define FILTERSIZE 512 #define ALLTYPE "ALL files (*.*)@*.*@" #define PICTURE "画像ファイル (*.bmp;*.mag;*.jpg;*.png)@*.bmp;*.mag;*.jpg;*.png@" #define SOUND "音楽ファイル (*.mid;*.mp3;*.wav)@*.mid;*.mp3;*.wav@" #define DOCUMENT "文書ファイル (*.txt)@*.txt@" #define OFN_FILEMUSTEXIST $00001000 gpreset setcls CLSMODE_SOLID, 0 chdir dir_exe+"\\sample\\hgimg4" gosub *選択ダイアログ //buffer 2, 640, 200, screen_offscreenr buffer 2 picload filename, 0 //celload filename, 2 //celload "hsp3dish.png", 2 picW = ginfo(12) ; 仮想ウィンドウの横幅=画像の幅の取得。 picH = ginfo(13) ; 仮想ウィンドウの高さ=画像の高さ取得。 title ""+picW+" / "+picH //stop //dim vram, ginfo_sx*ginfo_sy dim vram, picW*picH ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ *MAIN ;==================== celbitmap 2, vram, celbitmap_capture // celbitmap_capture = 描画画面の内容を変数に読み出す // pcol = vram(limit(mousex+(200-mousey)*640,0,length(vram)-1)) pcol = vram(limit(mousex+(picH-mousey)*picW,0,length(vram)-1)) col = (pcol>>24) & $FF, (pcol>>16) & $FF, (pcol>>8) & $FF, pcol & $FF ;==================== gsel 0 redraw 0 pos 0,0 : celput 2 pos mousex, mousey color col.3, col.2, col.1 mes strf(" 色は(%3d,%3d,%3d)", col.3, col.2, col.1), 4 boxf mousex+20, mousey+20, mousex+60, mousey+60 title filename+" // "+mousex+" / "+mousey+" // "+strf(" 色は(%3d,%3d,%3d)", col.3, col.2, col.1) redraw 1 await 32 goto *MAIN ;■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ *選択ダイアログ dim ofn , 22 sdim aplFilter , FILTERSIZE+1 sdim usrFilter , FILTERSIZE+1 sdim filename , BUFSIZE+1 aplFilter = PICTURE + SOUND + DOCUMENT + ALLTYPE + "@" usrFilter = "ユーザ選択フィルタ (*.*)@*.*@" + "@" repeat await 0 mutch=instr(aplFilter,start,"@") if mutch = -1 : break poke aplFilter , start + mutch , $00 start += mutch + 1 loop start = 0 repeat await 0 mutch=instr(usrFilter,start,"@") if mutch = -1 : break poke usrFilter , start + mutch , $00 start += mutch + 1 loop ofn.0 = 88 ; lStructSize ofn.1 = hwnd ; hwndOwner ofn.2 = hinstance ; hInstance ofn.3=varptr(aplFilter) ; lpstrFilter ofn.4=varptr(usrFilter) ; lpstrCustomFilter ofn.5 = FILTERSIZE ; nMaxCustFilter ofn.6 = 1 ; nFilterIndex ofn.7=varptr(filename) ; lpstrFile ofn.8 = BUFSIZE ; nMaxFile ofn.9 = 0 ; lpstrFileTitle ofn.10 = 0 ; nMaxFileTitle ofn.11 = 0 ; lpstrInitialDir ofn.12 = 0 ; lpstrTitle ofn.13 = OFN_FILEMUSTEXIST ; Flags prm=varptr(ofn) GetOpenFileName prm if stat = 0{ dialog "失敗" , 0 , "終了確認" : end } title filename return



アキアキノヒロロ

リンク

2022/6/27(Mon) 21:30:23|NO.96739

[E3D] の機能の、画像による進路設定、どうにか形にしました。

ツイッターの動画
https://twitter.com/akiakinohiroro/status/1541360655563104256

ギバロウ さんの、前もって画像からデータを作っておくという方法でも
やってみようと思います。



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