DOBON.NETプログラミング道掲示板

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 発言ランク ファイル一覧 検索 過去ログ

■ 「新規作成」から投稿できます。
■ マルチポストされた投稿を見つけたときは、その投稿に返信することによりご報告ください。その際は匿名で投稿し、マルチポストされている場所を併記してください。
■ スパム対策のため、メールアドレスの先頭に"_"という文字が付加されています。
RSS 2.0 RSS 2.0 | RSS 0.91 | 携帯電話用 | 自分専用のアイコンを使用するには | 掲示板への要望 | 管理人に連絡 | お気楽掲示板
■ 24時間以内に作成されたスレッドは New で表示されます。
■ 24時間以内に更新されたスレッドは UpDate で表示されます。

記事リスト ( )内の数字はレス数
Nomal複数の図形を重ねて描画するには(4) | NomalSNSへ自動投稿したい(2) | Nomal外部アプリケーションのアクティブ化(0) | Nomal「UDP」65535byteを超える画像データの送信(4) | Nomal画像の中心で回転させたい(3) | NomalPLCとの通信PGMの設計(1) | Nomalディスプレイの認識番号を求めたい(8) | NomalListViewの画像のドラッグアンドドロップ(14) | NomalMaskedTextBoxに丸囲み数字が入力できない(2) | NomalFTPにてリモート サーバーがエラーを返しました: (550) (1) | Nomalエンターキーでのコントロール移動(4) | Nomalメッセージの表示(1) | NomalThreading.Threadで戻り値を取得したい(8) | NomalPOSTとブラウザで動きが違うのはなぜでしょう?(6) | NomalUIスレッド使用中のBeginInvoke(5) | NomalForm起動時の例外スローが発生する原因が知りたい(1) | NomalASP.NET(VB.NET)でMapHubsを利用したい(2) | NomalForm1内のForm2でのTextBox入力がうまくいかない(6) | NomalnpgsqlでのExecuteScalarとExecuteReaderの扱いについて(2) | Nomalすきーむ りすと(2) | Nomalユーザーコントロールで自作のBackColorプロパティを使いたい(3) | NomalDataGridViewのRowLeaveのキャンセルについて(1) | Nomalプロパティウィンドウのカスタマイズ(2) | NomalCSV出力時に対象データバイト数+crlfの2バイト分のNull文字が出力される(4) | NomalIE11のダウンロード通知バーの保存を押したい(2) | Nomalmagick.net c# PDFの総ページ数取得(2) | NomalレジストリCLSIDの検索(4) | Nomalウィルスバスターについての質問(2) | NomalVB6からC#への変換時のエラー(1) | Nomal文字列配列からCheckedListBoxにチェック適用(4) | NomalC# Excelの列名の取得(3) | NomalWinサービスのサービス名をconfig化したい(1) | Nomalバッチで最新の環境変数を取得したい(4) | NomalWin7で開発したソフトがWin10で動かない(2) | Nomalテキストボックスのプロパティno(2) | NomalInternet Explorer Webページ保存のデフォルトフォルダ(1) | NomalASP.NETでネットワーク接続が切れた場合(0) | Nomalvb.net複数行入力テキストでのRETURNでの改行ができない(6) | Nomal中国語OSのFrameworkインストール画面の文字化け(1) | NomalExcelファイル内の画像取り込み(2) | NomalC# npgsqlでの動作(2) | Nomalコンボボックス継承で独自フォームの表示(1) | Nomalあらゆる例外がTargetInvocationExceptionで出力される。(5) | NomalListViewのページは指定できるのでしょうか?(ASP.NETではありません)(2) | Nomal追加したイベントハンドらが動かない。(2) | Nomalマルチディスプレイ環境で任意のモニターに描画したい(5) | NomalC#からのメール送信エラー(2) | Nomalメールの送信結果通知(2) | NomalVS2015,C#・・・別アプリ起動IEの表示ページのURL取得は?(4) | NomalVS2015のListViewにて、行挿入されない(2) | NomalVB.NETからエクセル(アクティブセル)への画像挿入(4) | NomalPowerShellで文字列を変数に変換したい(8) | NomalVisual Studio 2015 のビルドエラー表示のタイミング(2) | Nomalダウンキャストの実装を簡潔に記述したい(3) | Nomal(C#)BitArray同士の比較(1) | Nomalカスタムページサイズでの印刷(0) | Nomalフォームの表示位置を揃えたい(4) | Nomalユーザーコントロールをツールバーに表示できない(6) | Nomalforループの並列化とUI操作について(1) | NomalSQLをVBでUAC有効未昇格ClickOnceで操作したい(2) | NomalVB6 + Windows7 処理がおちる(3) | NomaltoolStripContainerの中でtoolStrip同士を重ねたい(1) | Nomal画像を見ていただき使っているどのコントローラーが使われているのか教えてください。(3) | Nomal外部アプリのマウスクリック無効化について。(2) | NomalDataGridViewにおいたComboBoxの表示(4) | Nomaldllのパス(6) | NomalVS2015 Express インストール時のエラー(3) | Nomalvb.netでの彩度調整(5) | Nomalカスタムコントロール作成について(2) | Nomalwebbrowserでjqueryのイベントを発生させたい(3) | Nomalfor文について(超初心者向け)(0) | Nomal【お知らせ】ファイルアップロード機能の停止等、変更を行いました(1) | Nomalデータグリッドビューのセル内テキストの部分選択(2) | Nomalフォームを連続表示後、最後のフォームをアクティブにしたいが出来ないのです(0) | NomalWebページのWebClient取得が失敗する(1) | NomalWebAPIがうまいこと動きません(0) | NomalPanel上のDataGridviewにてタブ移動時のScrollイベント取得について(2) | NomalDBの数値型カラムのサイズを取得する方法(2) | Nomalチェックボックスでチェックしたものだけをツリービューの階層通りにコピーしたい(6) | NomalSleepの使い方(2) | Nomalドキュメントアウトラインでの要素移動(2) | Nomal背景が透明のアニメGIFを作成したい(3) | NomalWebBrowserのopener.location.hrefの値取得(1) | Nomal検索結果を任意のタイミングで元フォームに知らせる(4) | NomalEclipseのrun as とopen with web browser(0) | NomalDaTaGidViewに入力されたデータの反映方法(0) | Nomalイベントハンドラ内でのメソッド呼び出し(2) | Nomal文字列描写時の縁の太さを大きく指定すると縁が飛び出る現象(2) | Nomalネットワーク越しのFileSystemWatcher(7) | NomalCopyFromScreenのキャプチャ画像ズレとディスプレイの高DPI設定(3) | NomalReportViewerで、表の背景色を段違いにしたい(0) | NomalPHPでPOST変数の一括初期化(2) | Nomal可読性が悪いので名前空間を追加しないよう改善してほしい(2) | NomalC#で作成したDLLがVB6.0で利用できない(15) | NomalVB.NETでネットワークドライブの割り当てダイアログを表示したい(7) | Nomal定期的なバックグランド処理で「SleepとWhile文を使用した方法」を使うケースについて(5) | NomalDataRepeater MaskedTextBox SelectAll出来ない(5) | NomalSQL Server Management Studioでテキスト表示(0) | NomalStreamReader/Writer使用後にファイルを削除したい(1) | Nomalフォーム画面の保存(3) |



■記事リスト / ▼下のスレッド
■33730 / 親記事)  複数の図形を重ねて描画するには
□投稿者/ ぶぶ 一般人(1回)-(2017/11/06(Mon) 11:11:56)
  • アイコン環境/言語:[Windows7 vb2010] 
    分類:[.NET] 

    VB2010 windows7で開発しています。

    PictureBoxに図形を描画する際に、複数の図形を描画して、
    その図形の領域が重なる部分は色を混ぜて描画したいのですが、
    なかなか検索できません。

    例えば、赤い丸と青い丸のかさなった部分は紫に表示したいのです。
    何かヒントでも頂けないでしょうか?
    よろしくお願い致します。

違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■33731 / ResNo.1)  Re[1]: 複数の図形を重ねて描画するには
□投稿者/ kiku 一般人(2回)-(2017/11/06(Mon) 12:10:38)
  • アイコンdobonサイトに下記サンプルが紹介されていますが、
    こちらでは実現できない条件があるのでしょうか?

    http://dobon.net/vb/dotnet/graphics/fillregion.html

違反を報告
引用返信
■33732 / ResNo.2)  Re[2]: 複数の図形を重ねて描画するには
□投稿者/ ぶぶ 一般人(2回)-(2017/11/06(Mon) 13:37:15)
  • アイコン返信ありがとうございます。

    見つけることができていなかったので、助かります。

    サンプルをみると重なった部分は黒色を指定して描画されていますが、
    私が今やりたいのは、重なった部分の色を指定するのではなく、
    現在描画されている色と今回描画する図形の重なる部分の色は、
    描画されている図と混ぜた色で描画したいのです。

    質問の仕方が悪くて申し訳ないのですが、
    現在描画されている色も一色とは限らず複数の色で図形を描いています。
    現在描画している図形も、図形どおしが重なった色で描画されていることも
    あります。
    なので、重なった部分の色の指定は難しいかなと思っています。
    よろしくお願い致します。

    No33731に返信(kikuさんの記事)
    > dobonサイトに下記サンプルが紹介されていますが、
    > こちらでは実現できない条件があるのでしょうか?
    >
    > http://dobon.net/vb/dotnet/graphics/fillregion.html
    >
違反を報告
引用返信
■33733 / ResNo.3)  Re[3]: 複数の図形を重ねて描画するには
□投稿者/ みい 一般人(2回)-(2017/11/07(Tue) 09:20:57)
  • アイコン2017/11/07(Tue) 11:55:07 編集(投稿者)

    No33732に返信(ぶぶさんの記事)
    > サンプルをみると重なった部分は黒色を指定して描画されていますが、
    > 私が今やりたいのは、重なった部分の色を指定するのではなく、
    > 現在描画されている色と今回描画する図形の重なる部分の色は、
    > 描画されている図と混ぜた色で描画したいのです。
    半透明描画ではいかがでしょうか。
    https://dobon.net/vb/dotnet/graphics/alphabland.html

    半透明ではなく、きっちり色を混ぜたいという場合…
    混色には光の3原色、絵具の3原色という考え方があります。
    http://fnorio.com/0074trichromatism1/trichromatism1.html
    光の3原色の場合、図形描画の背景を白とするならば
    背景としての白なのか混ざった結果の白なのかなど
    いろいろ考慮する必要があると考えられます。
違反を報告
引用返信
■33734 / ResNo.4)  Re[4]: 複数の図形を重ねて描画するには
□投稿者/ ぶぶ 一般人(3回)-(2017/11/08(Wed) 08:57:26)
  • アイコン返信ありがとうございます。

    早速半透明にするサンプルを参考に組み込んでみました。
    希望する結果を得ることができました。
    ありがとうございました。

    厳密に色を混ぜる方法は、考えてましたが、難しくて。。。
    結果を出せませんでした。
    すみません。教えて頂いたのに。生かせませんでした。

    お時間を割いて教えて頂きありがとうございました。

    No33733に返信(みいさんの記事)
    > 2017/11/07(Tue) 11:55:07 編集(投稿者)
    >
    > ■No33732に返信(ぶぶさんの記事)
    >>サンプルをみると重なった部分は黒色を指定して描画されていますが、
    >>私が今やりたいのは、重なった部分の色を指定するのではなく、
    >>現在描画されている色と今回描画する図形の重なる部分の色は、
    >>描画されている図と混ぜた色で描画したいのです。
    > 半透明描画ではいかがでしょうか。
    > https://dobon.net/vb/dotnet/graphics/alphabland.html
    >
    > 半透明ではなく、きっちり色を混ぜたいという場合…
    > 混色には光の3原色、絵具の3原色という考え方があります。
    > http://fnorio.com/0074trichromatism1/trichromatism1.html
    > 光の3原色の場合、図形描画の背景を白とするならば
    > 背景としての白なのか混ざった結果の白なのかなど
    > いろいろ考慮する必要があると考えられます。
解決済み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-4]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■33727 / 親記事)  SNSへ自動投稿したい
□投稿者/ LOVESONY 一般人(3回)-(2017/11/05(Sun) 18:04:22)
  • アイコン環境/言語:[VB.NET ASP.NET] 
    分類:[.NET] 

    いつもお世話になっております。
    表題の通りSNSへ自動投稿したいです。

    具体的には社内SNSのようなものを開発しているのですが、社内SNSの機能の一つである「つぶやき」機能で文章を社内SNS内に投稿した際に、投稿した同じ文章や画像をTwitter、FaceBook、インスタグラムへ自動投稿したいです。
    トークンを取得して〜のようなやり方もあるようですが、複数のアカウントでも使用可能でしょうか。
    よろしくお願い致します。

    ASP.NET
    VB.NET2013

違反を報告
引用返信

▽[全レス2件(ResNo.1-2 表示)]
■33728 / ResNo.1)  Re[1]: SNSへ自動投稿したい
□投稿者/ Azulean 大御所(487回)-(2017/11/05(Sun) 18:56:57)
  • アイコン2017/11/05(Sun) 18:58:09 編集(投稿者)

    No33727に返信(LOVESONYさんの記事)
    > トークンを取得して〜のようなやり方もあるようですが、複数のアカウントでも使用可能でしょうか。

    具体的に何を懸念されていますか?

    それぞれのメンバーがその社内 SNS の画面から Twitter などの画面に遷移して承認する形で設定していくのであればできるかもしれません。
    これは複数アカウントというよりは、Twitter クライアントが各端末で承認してもらっているのと同じようなものだからです。
    (Facebook が Twitter 連携するみたいなものと同じ)

    それぞれのメンバーが逐次設定するのではなく、運営側がまとめて設定したいうことであれば方法はないかと思います。
    各 SNS 提供者に特殊な方法の有無について確認することが必要そうです。
違反を報告
引用返信
■33729 / ResNo.2)  Re[2]: SNSへ自動投稿したい
□投稿者/ LOVESONY 一般人(4回)-(2017/11/05(Sun) 20:08:21)
  • アイコンNo33728に返信(Azuleanさんの記事)
    >その社内 SNS の画面から Twitter などの画面に遷移して承認する形で設定していく

    Azulean様
    アドバイスを頂きありがとうございます。
    私の調査不足もあると思いますが、トークンを取得して実装する場合に、そのトークンを取得 = 例えばFaceBookであればFaceBook1ユーザアカウントにひもづくものなのかと勝手に考えておりました。
    (全ての使用ユーザごとにトークンを取得しなければならないと思っていました。)

    Azulean様のコメントから察するに、トークンを取得してこれを実現した場合、各ユーザが社内SNSから投稿した時に、各サービス(FaceBook、Twitter、Instagram)が各ユーザに承認を求め、承諾されて初めてそのユーザの自動投稿が成立するという事なのですね。

    実際に実装して試すなどしてみようと思います。
    ありがとうございます!

違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-2]



■記事リスト / ▼下のスレッド / ▲上のスレッド
■33726 / 親記事)  外部アプリケーションのアクティブ化
□投稿者/ あばば無人君 一般人(4回)-(2017/11/02(Thu) 17:35:52)
  • アイコン環境/言語:[Windows7(32bit)、C#、.NET Framework-4.0] 
    分類:[.NET] 

    投稿2回目です。宜しくお願いします。

    WindowsFormsApplication1とWindowsFormsApplication2があるとします。※長いので以後はFA1、FA2と記載。

    FA1からbutton1の押下でSystem.Diagnostics.Processクラスを使用してFA2を起動し、button2の押下で起動したFA2をアクティブにしたいと考えています。

    https://dobon.net/vb/dotnet/process/appactivate.htmlページにある方法でFA2をアクティブにしようとしたのですが、
    FA2のFormのプロパティShowInTaskbarがfalseだといずれの方法でもアクティブにできませんでした。※ShowInTaskbarをtrueにすれば可。

    ShowInTaskbarがfalseでもFA2をアクティブ化する方法は有りますでしょうか?
    宜しくお願い致します。

違反を報告
引用返信



■記事リスト / ▼下のスレッド / ▲上のスレッド
■33704 / 親記事)  「UDP」65535byteを超える画像データの送信
□投稿者/ RIZE 一般人(1回)-(2017/10/17(Tue) 15:32:16)
  • アイコン環境/言語:[OS : Windows 7 / 言語 : C# / .NET Framework : 3.5] 
    分類:[.NET] 

    【解決したい問題】

    2台のPC間で、片方のPCで描かれた画像データを別のPCでリアルタイム表示するアプリケーションを検討しています。
    アプリのイメージは、ペイントツールのようなアプリで描かれた画像データを、別のPCでリアルタイム表示するアプリとなります。
    当初、画像データ(bitmap)をバイト配列化し、UDPで送信し、受け取り側でbmp化しなおして表示しようかと思っておりましたが、上限の65535を超える画像も想定されるため、どうしようか悩んでおります。

    以下前提条件です。
    ・5MBを超える画像データも存在する
    ・とにかくリアルタイムで表示させたい(高速性を重視)
    ・UDPの特性の順番が変わったり、パケットロスするのは問題ない(あくまでモニタ表示のため)

    インターネットプロトコルをipv6にすれば、上記上限はなくなるため、
    問題ないかと思っていましたが、System.Net.Sockets.UdpClientで作成したサンプルで試してみると、やはり上限が65535のようで、うまくいきませんでした。(ipv6のサンプルは本サイトを参考にし作成)

    また、データを分割して送れば出来そうかなとは思いましたが、その場合、受け取り側で受け取り順番の考慮や、パケットロスを考慮する必要があるかと思いますが、これを極力簡単にしたいと思っており、ほかの方法がないか検討しています。

    こういった場合、どういった方法が考えられますでしょうか?
違反を報告
引用返信

▽[全レス4件(ResNo.1-4 表示)]
■33712 / ResNo.1)  Re[1]: 「UDP」65535byteを超える画像データの送信
□投稿者/ shu 大御所(480回)-(2017/10/19(Thu) 11:55:07)
  • アイコンNo33704に返信(RIZEさんの記事)

    送り側
    ・画像を送信可能サイズに分割
    ・ID+データ種別(1)+総数を送信
    ・ID+データ種別(2)+分割番号+分割データ郡をそれぞれ送信

    受け側
    ・同一IDのデータがそろったら画像を復元して表示
    ・違うIDが届いたらそれまでのデータを破棄

    基本的にはこんな感じだと思います。
違反を報告
引用返信
■33715 / ResNo.2)  Re[2]: 「UDP」65535byteを超える画像データの送信
□投稿者/ RIZE 一般人(2回)-(2017/10/19(Thu) 14:56:57)
  • アイコンNo33712に返信(shuさんの記事)
    返信ありがとうございます。
    やはりそういうプロトコルにするしかなさそうですね。

    ipv6であれば、65535バイトの制限がないとの認識でしたが、あっておりますでしょうか?

違反を報告
引用返信
■33718 / ResNo.3)  Re[3]: 「UDP」65535byteを超える画像データの送信
□投稿者/ shu 大御所(481回)-(2017/10/20(Fri) 07:02:49)
  • アイコンNo33715に返信(RIZEさんの記事)
    > ■No33712に返信(shuさんの記事)
    > 返信ありがとうございます。
    > やはりそういうプロトコルにするしかなさそうですね。
    >
    > ipv6であれば、65535バイトの制限がないとの認識でしたが、あっておりますでしょうか?
    >
    UDPの仕様としては可能みたいですが、
    https://ja.wikipedia.org/wiki/User_Datagram_Protocol

    UdpClientで同一制限がかかるのは何か指定が足りないか、不可能なのだと思います。さらに低レベルのSocketを使うと出来るかもしれません。
違反を報告
引用返信
■33725 / ResNo.4)  Re[4]: 「UDP」65535byteを超える画像データの送信
□投稿者/ RIZE 一般人(4回)-(2017/10/25(Wed) 23:56:14)
  • アイコンNo33718に返信(shuさんの記事)
    > ■No33715に返信(RIZEさんの記事)
    >>■No33712に返信(shuさんの記事)
    > UdpClientで同一制限がかかるのは何か指定が足りないか、不可能なのだと思います。さらに低レベルのSocketを使うと出来るかもしれません。
    返信ありがとうございます。
    今回は分割送信のプロトコルを作ることにします。
    ありがとうございました。
解決済み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-4]



■記事リスト / ▲上のスレッド
■33720 / 親記事)  画像の中心で回転させたい
□投稿者/ たこ 一般人(1回)-(2017/10/23(Mon) 18:27:40)
  • アイコン環境/言語:[Windows10 64bit、VB.NET、.NET Framework 4.5.2] 
    分類:[.NET] 

    2017/10/23(Mon) 22:44:27 編集(投稿者)

    いつも参考にさせて頂いており、お世話になっています。

    グラフィック系の質問なのですが、矢印アイコンなどの正方形の画像を、
    画像の中心で任意の方向に回転させたいのですが、ヒントでもご教授頂ければと思い、
    投稿させて頂きました。

    参考にしたページは

    画像を指定した角度回転して表示する
    https://dobon.net/vb/dotnet/graphics/skewing.html#rotate

    ワールド変換により画像を平行移動、拡大、縮小、回転して表示する
    https://dobon.net/vb/dotnet/graphics/transform.html#section1

    なのですが、どうしても画像の左上で回転してしまいます。
    rotateImage1のメソッドを何とかすれば良い気もしていますが…
    (サンプルそのままですみません…汗)


    -------------------------------------------------------------------------------
    Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    PictureBox1.ImageLocation = "s1.png"
    TrackBar1_Scroll(Nothing, Nothing)
    End Sub

    Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrackBar1.Scroll
    TextBox1.Text = TrackBar1.Value
    End Sub

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    If TextBox1.Text <> "" Then
    If (0 <= TextBox1.Text AndAlso TextBox1.Text <= 359) Then
    TrackBar1.Value = TextBox1.Text
    ElseIf TextBox1.Text > 359 Then
    TextBox1.Text = 359
    TrackBar1.Value = TextBox1.Text
    Else
    TextBox1.Text = 0
    TrackBar1.Value = TextBox1.Text
    End If
    End If
    rotateImage1()
    rotateImage2()
    End Sub

    Private Sub rotateImage1()
    Dim g As Graphics
    Dim Img As Image = Image.FromFile("s1.png")
    Dim backImg As New Bitmap("Blank.jpg")

    '描画先とするImageオブジェクトを作成する
    Dim bmp As New Bitmap(Img.Width, Img.Height)
    'ImageオブジェクトのGraphicsオブジェクトを作成する
    g = Graphics.FromImage(bmp)

    'ラジアン単位に変換
    Dim d As Double = Single.Parse(TextBox1.Text / (180 / Math.PI))
    '新しい座標位置を計算する
    Dim x As Single = Img.Width / 2.0F
    Dim y As Single = Img.Height / 2.0F
    Dim x1 As Single = x + Img.Width / 3.0F * CType(Math.Cos(d), Single)
    Dim y1 As Single = y + Img.Width / 3.0F * CType(Math.Sin(d), Single)
    Dim x2 As Single = x - Img.Height / 3.0F * CType(Math.Sin(d), Single)
    Dim y2 As Single = y + Img.Height / 3.0F * CType(Math.Cos(d), Single)
    'PointF配列を作成
    Dim destinationPoints() As PointF = {New PointF(Img.Width - x, Img.Height - y), New PointF(x1, y1), New PointF(x2, y2)}
    'Dim destinationPoints() As PointF = {New PointF(x, y), New PointF(x1, y1), New PointF(x2, y2)}

    '画像を表示
    g.DrawImage(Img, destinationPoints)


    'リソースを解放する
    Img.Dispose()
    g.Dispose()

    bmp.MakeTransparent()

    '背景の画像と合成する
    '背景となる画像を読み込む
    '背景の画像に描画する
    g = Graphics.FromImage(backImg)
    g.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height)
    g.Dispose()
    bmp.Dispose()

    PictureBox2.Image = backImg
    End Sub

    Private Sub rotateImage2()
    Dim g As Graphics
    Dim Img As Image = Image.FromFile("s1.png")
    Dim backImg As New Bitmap("Blank.jpg")

    '描画先とするImageオブジェクトを作成する
    Dim bmp As New Bitmap(Img.Width, Img.Height)
    'ImageオブジェクトのGraphicsオブジェクトを作成する
    g = Graphics.FromImage(bmp)

    'ワールド変換行列を単位行列にリセット
    g.ResetTransform()
    'ワールド変換行列を45度回転し、追加する
    g.RotateTransform(TextBox1.Text)
    '画像を描画
    g.DrawImage(Img, New Rectangle(0, 0, Img.Width, Img.Height))

    'リソースを解放する
    Img.Dispose()
    g.Dispose()

    bmp.MakeTransparent()

    '背景の画像と合成する
    '背景となる画像を読み込む
    '背景の画像に描画する
    g = Graphics.FromImage(backImg)
    g.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height)
    g.Dispose()
    bmp.Dispose()

    PictureBox3.Image = backImg
    End Sub
    End Class
    -------------------------------------------------------------------------------

244×199
イメージ
1508750860.png
/2KB
違反を報告
引用返信

▽[全レス3件(ResNo.1-3 表示)]
■33722 / ResNo.1)  Re[1]: 画像の中心で回転させたい
□投稿者/ Azulean 大御所(486回)-(2017/10/23(Mon) 23:19:43)
  • アイコンNo33720に返信(たこさんの記事)
    > なのですが、どうしても画像の左上で回転してしまいます。

    それぞれの回転の中心が「座標の原点(0, 0)」という仕様だからです。
    原理的には以下を組み合わせることになります。

    1.画像の中心が座標の原点に重なるように平行移動する
    2.画像を回転する
    3.1と逆方向に平行移動する

    ところで、「VB.NET 回転 中心」で検索するとそれっぽいサイトが出てきますので、検索のキーワードを工夫してみるのも道でしょうか?
違反を報告
引用返信
■33723 / ResNo.2)  Re[2]: 画像の中心で回転させたい
□投稿者/ たこ 一般人(4回)-(2017/10/23(Mon) 23:32:01)
  • アイコンNo33722に返信(Azuleanさんの記事)
    > ■No33720に返信(たこさんの記事)
    ご回答ありがとうございます。
    ちょっとやってみてまたご報告致します。

    「VB.NET 回転 中心」は思いつきませんでした。

    「VB2015、画像、中心で回転」で検索していました。
    有益な情報ありがとうございます。
違反を報告
引用返信
■33724 / ResNo.3)  Re[3]: 画像の中心で回転させたい
□投稿者/ たこ 一般人(5回)-(2017/10/23(Mon) 23:54:50)
  • アイコンNo33723に返信(たこさんの記事)
    > ■No33722に返信(Azuleanさんの記事)
    >>■No33720に返信(たこさんの記事)

    解決致しました。ありがとうございました。

    ------------------------------------------------------------------------------- Private Sub rotateImage2()
    Dim g As Graphics
    Dim Img As Image = Image.FromFile("s1.png")
    Dim backImg As New Bitmap("Blank.jpg")

    '描画先とするImageオブジェクトを作成する
    Dim bmp As New Bitmap(Img.Width, Img.Height)
    'ImageオブジェクトのGraphicsオブジェクトを作成する
    g = Graphics.FromImage(bmp)

    'ワールド変換行列を単位行列にリセット
    g.ResetTransform()

    '▼ 1.画像の中心が座標の原点に重なるように平行移動する
    g.TranslateTransform(-Img.Width / 2.0F, -Img.Height / 2.0F)

    '▼ 2.画像を回転する
    g.RotateTransform(TextBox1.Text, System.Drawing.Drawing2D.MatrixOrder.Append)

    '▼ 3.1と逆方向に平行移動する
    g.TranslateTransform(Img.Width / 2.0F, Img.Height / 2.0F, System.Drawing.Drawing2D.MatrixOrder.Append)

    '画像を描画
    g.DrawImage(Img, New Rectangle(0, 0, Img.Width, Img.Height))

    'リソースを解放する
    Img.Dispose()
    g.Dispose()

    bmp.MakeTransparent()

    '背景の画像と合成する
    '背景となる画像を読み込む
    '背景の画像に描画する
    g = Graphics.FromImage(backImg)
    g.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height)
    g.Dispose()
    bmp.Dispose()

    PictureBox3.Image = backImg
    End Sub
    -------------------------------------------------------------------------------
    ワールド変換により画像を平行移動、拡大、縮小、回転して表示する
    https://dobon.net/vb/dotnet/graphics/transform.html#section1

    の下の方のMatrixOrderの理解が良く出来ていなかったのが敗因でした…

    「VB.NET 回転 中心」で検索し、NonSoftさんのページも参考にしましたので、
    併せてご報告致します。
    -------------------------------------------------------------------------------

    Bitmapを中心点と角度を指定して回転するサンプル(VB.NET) 620825
    http://nonsoft.la.coocan.jp/SoftSample/VB.NET/SampleRotateBitmap.html
    -------------------------------------------------------------------------------

    ありがとうございました。
解決済み!
違反を報告
引用返信

■記事リスト / レス記事表示 → [親記事-3]






Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 発言ランク ファイル一覧 検索 過去ログ

- Child Tree -

2017/11/21(Tue) 04:05:28 に作成されたキャッシュを表示しています。
生のデータを表示する | キャッシュを最新にする