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


HSPTV!掲示板


未解決 解決 停止 削除要請

2023
0812
ワカバウインドウを回転させたいです5未解決


ワカバ

リンク

2023/8/12(Sat) 22:31:57|NO.99899

画面上の円内をクリックするとウインドウが90度回転するようにしたいです。



この記事に返信する


zrs90(5さい)

リンク

2023/8/13(Sun) 08:28:05|NO.99902

質問が、下記の通りであれば
出来ないと思われます

出来るなら需要はあると思いますので
何らかのソフトがすでに存在するはずです

(※画像キャプチャして回転させて表示...
と言うのは勿論、違いますね)

ーーーーーーーーーーーーーーーーーーーーーー

windowsで特定のウインドウだけを90度回転
させることは可能ですか

...でGoogle検索

Yahoo知恵袋等の回答も見てみるとよろしいかと


⚫︎追記

質問者さんと下記のスレッドのワカバ さんは
同一の方でしょうか?違う方であれば
この件は「スルー」して下さい

http://hsp.tv/play/pforum.php?mode=all&num=99858

回答が何件か来てます
#99858 の件についてまだ
質問があるのであれば
質問を続けて下さい

解決したのであれば
回答者の方々にお礼と
解決印にチェックを入れて
解決済にして頂けると
ありがたいです

今後も、HSP3 を使っていくのであれば「掲示板」
の方々とは、長い付き合いになりますので
下記も一度、読んでおくと良いです

http://hsp.tv/play/pforum.php?mode=about



ワカバ

リンク

2023/8/13(Sun) 09:41:58|NO.99904

解決にするのを忘れていました…
教えていただきありがとうございます。



ワカバ

リンク

2023/8/13(Sun) 09:56:04|NO.99905

ウインドウごと回転できないのであれば、画面上にあるすべてのオブジェクトの座標に回転の公式を
用いて描画し直すしかないですかね?



zrs90(5さい)

リンク

2023/8/13(Sun) 10:59:08|NO.99907

デスクトップ全体なら可能みたいです

ただしosから設定しないとダメな場合
がある事、マウス等の動作は追従しません
ので、むやみに設定すると面倒な事になります

(※タブレット型や、画面タッチ操作の
可能なPCは持っていないので分かりません)

https://www.fmworld.net/cs/azbyclub/qanavi/jsp/qacontents.jsp?PID=8711-1130



沢渡

リンク

2023/8/14(Mon) 00:22:01|NO.99910

力技ですが、やってみました。
ボタン等のオブジェクトは配置できないので、使い勝手はあまりよろしくないと思いますが。

//・元の画面はバッファ1に対して描画します。(ボタン等のオブジェクトは配置できません) //・modeの値によって画面が何度回転するかが決まります。 //・「makewindow」でmodeの値に応じたウィンドウ0を作成し、バッファ1の内容を反映させます。 //・「reflect x座標,y座標,横幅,縦幅」でバッファ1の内容をウィンドウ0に反映させます。 //・reflect実行後は描画先がウィンドウ0になります。 //・「get_point x座標,y座標」で、ウィンドウ0上のx座標とy座標を元の画面のそれに変換し、変数mxとmyに代入します。 //・「get_point2 x座標,y座標」で、元の画面上のx座標とy座標をウィンドウ0のそれに変換し、変数mxとmyに代入します。 #include "gdi32.as" #include "user32.as" #module #deffunc mouse2 int c_x,int c_y //mouse命令のウィンドウ上の座標を指定する版 dim poi,2 : poi=c_x,c_y ClientToScreen hwnd,varptr(poi) mouse poi(0),poi(1) return #global w_wid=640 //元の画面の横幅 w_hei=480 //元の画面の縦幅 mode=0 //0:通常 1:90度回転 2:180度回転 3:270度回転 dim point,6 //回転処理時に使う buffer 1,w_wid,w_hei : gsel 1 : hdc1=hdc //hdc1はバッファ1のhdc //以下、元の画面の描画はバッファ1に対して行う。 gsel 1 color 255,0,0 : boxf 100,100,199,199 color 0,255,0 : boxf 500,120,599,219 color 0,0,255 : boxf 130,300,229,399 color 255,255,0 : boxf 520,320,619,419 color 255,0,255 : circle 280,200,360,280 make_window onclick gosub *click stop *click get_point mousex,mousey if (mx>=280)&(mx<=360)&(my>=200)&(my<=280) { //丸をクリックした場合 mode++ : if mode>3 : mode=0 make_window //マウスカーソルの位置を丸の位置に移動させる get_point2 mx,my : mouse2 mx,my return } flag=0 if (mx>=100)&(mx<=199)&(my>=100)&(my<=199) { flag=1 : s="赤がクリックされました" } if (mx>=500)&(mx<=599)&(my>=120)&(my<=219) { flag=1 : s="緑がクリックされました" } if (mx>=130)&(mx<=229)&(my>=300)&(my<=399) { flag=1 : s="青がクリックされました" } if (mx>=520)&(mx<=619)&(my>=320)&(my<=419) { flag=1 : s="黄がクリックされました" } if flag { gsel 1 color 255,255,255 : boxf 0,460,639,479 color 0,0,0 : pos 0,460 : mes s reflect 0,460,639,20 } return #define ctype tern(%1,%2,%3) ((%2)-((%1)=0)*((%2)-(%3))) //%1が条件を満たしているなら%2を、満たしていないなら%3を返す #deffunc make_window gsel 0 screen 0,tern(mode\2,w_hei,w_wid),tern(mode\2,w_wid,w_hei),0,ginfo_wx1,ginfo_wy1 hdc0=hdc //hdc0はウィンドウのhdc。(ウィンドウを作り直すたびに取得する必要あり) reflect 0,0,w_wid,w_hei return #deffunc get_point int mx0,int my0 switch mode case 1 mx=my0 : my=w_hei-1-mx0 swbreak case 2 mx=w_wid-1-mx0 : my=w_hei-1-my0 swbreak case 3 mx=w_wid-1-my0 : my=mx0 swbreak default mx=mx0 : my=my0 swbreak swend return #deffunc get_point2 int mx1,int my1 switch mode case 1 mx=w_hei-1-my1 : my=mx1 swbreak case 2 mx=w_wid-1-mx1 : my=w_hei-1-my1 swbreak case 3 mx=my1 : my=w_wid-1-mx1 swbreak default mx=mx1 : my=my1 swbreak swend return #deffunc reflect int s_x,int s_y,int s_w,int s_h //grotateは回転角度が実数指定で、きっちり90度回転できるかどうか怪しいので、 //WinAPIのPlgBltで回転処理を行います。 //参考:https://motchy99.blog.fc2.com/blog-entry-60.html switch mode case 1 dx=w_hei-1-s_y-s_h dy=s_x point=dx+s_h,dy,dx+s_h,dy+s_w,dx,dy swbreak case 2 dx=w_wid-1-s_x-s_w dy=w_hei-1-s_y-s_h point=dx+s_w-1,dy+s_h-1,dx-1,dy+s_h-1,dx+s_w-1,dy-1 swbreak case 3 dx=s_y dy=w_wid-1-s_x-s_w point=dx,dy+s_w,dx,dy,dx+s_h,dy+s_w swbreak default dx=s_x : dy=s_y point=dx,dy,dx+s_w,dy,dx,dy+s_h swbreak swend PlgBlt hdc0,varptr(point),hdc1,s_x,s_y,s_w,s_h,0,0,0 gsel 0 if mode\2 { redraw 1,dx,dy,s_h,s_w } else { redraw 1,dx,dy,s_w,s_h } return



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