• 締切済み

VBでお絵かきソフトを作っています…

よろしくお願いします. タイトルにも書いたんですが…VBでお絵かきソフトを作っています.ほとんど出来上がったんですが,画像の拡大・縮小処理をさせるのに困っています. アフィン変換と補間法を利用して拡大・縮小処理を行います.まず画素の色をコピーすることからやりたいと思っています.持っている本を手当たり次第に読んだんですが…プログラムがかけません. 例えば,(a,b)の座標の色を読み込む場合にどうしたらいいのでしょうか…その色を拡大・縮小後の(A,B)の座標にコピーするのはどうしたらいいのでしょうか…教えてください. さらに,ヘルプを使ってみたんですが、「MSDNをインストールしてください」って出ます…MSDNっていうのもわかりません.初歩的なことかもしれませんが…教えてください

みんなの回答

  • arata
  • ベストアンサー率49% (139/279)
回答No.1

色を取るのは、Pointメソッドです。 1点のみ色を塗るのであれば、Pset、ある範囲を四角く塗るのであれば、LineにBFオプションをつけます。 Dim lngColor As Long lngColor = Picture1.Point(100, 100) Picture1.PSet (200, 100), lngColor Picture1.Line (300, 100)-(400, 200), lngColor, BF それからMSDNですが、Microsoft Developer Networkライブラリと言うやつで、Microsoftの開発関係の情報が入ったものです。HELPとして使うのですが、VBだけじゃなく、VCやWindowsAPIなどいろんな情報が入っています。VBのパッケージにいっしょに入っていたはずです。 現在は、MSDNをインターネットで使用できるようになっておりますので、下記のURLを見てみてください。ですが、F1キーでHELPが開くわけではないので、MSDNはインストールした方がいいと思います(っていうか必須ですね)。

参考URL:
http://www.microsoft.com/japan/developer/library/default.asp
juice-k
質問者

お礼

回答ありがとうございます. なるほど,こうやって画素値をとることができるんですね!これがわかれば後は拡大縮小のプログラムは書けそうです.参考になります. MSDNはVBだけではないんですか…これはインストールしないと… 本当にありがとうございます.

関連するQ&A

  • Photoshopの画像サイズ変更の内部処理について

    現在画像処理プログラムをC言語で作成しているのですが、画像の拡大縮小、 回転、平行移動の機能をもたせたアフィン変換のプログラムで、画像の濃度値 の補間方法を最近傍法、線形補間法、三次補間法の3つから選べるようにして います。 プログラムはほぼ完成し、ためしに画像の拡大縮小、回転、平行移動を含む様 々な処理をやらせてみましたが、目で結果を確認する限り、ほぼできています。 しかし、三次補間法を使用してある画像の縮小をやったときに、画像の縮小は できているのですが、画像処理ソフトPhotoshop5.5を使用したものと微妙に結 果が異なってしまいます。これが、後々の処理に効いてくるため、最終的な結 果に大きく影響します。 三次補間法では、対象画素の近傍の16個の濃度値で標本化関数の近似によっ て濃度値を計算するという一般的によく用いられている方法をとっています。 これを、近傍の16個の濃度値を用いて、標本化関数の近似ではなく、標本化 関数を用いて補間濃度を計算してみると、目で結果を確認する限り、少し Photoshop5.5に近づきました。 他にも、自分なりにいろいろ調べた結果、画像の縮小だけであれば、一度、変 換前の画像サイズと変換後の画像サイズの最小公倍数に拡大して、最小公倍数 分の画素の濃度値の平均をとっていくという手法もわかりました。 しかし、Photoshop5.5では、補間方法はnearlest,bi linear,bi cubicとなって おり、明らかに最近傍法、線形補間法、三次補間法の3つを用いています。私 の予想では、三次補間法の濃度値の補間法が違うのではないかと考えておりま す。 どなたか、Photoshopに限らず、一般的な画像処理ソフトなどで用いられている 画像サイズの変更の内部処理について教えていただけないでしょうか。

  • アフィン変換と領域分割

    アフィン変換やCGなどにお詳しい方がおられましたらお手数ですが下記質問にご回答をいただけないでしょうか? 大きな入力画像を小さな画像に領域分割してアフィン変換により拡大・回転処理を行いたいと考えています。 方法として、例えば256×256の画像を128×128の画像に2×2の領域分割(左上A,左下B,右上C,右下D画像)して各128×128画像についてアフィン変換を行い2倍の拡大処理を行う事を考えました。 しかし、ここで疑問がでてきました。2倍の拡大処理を行う場合、出力画像から入力画像の座標位置を算出しないとマッピングされない画素ができてしまう為、画像Aをアフィン変換する際に入力画像の4頂点よりアフィン変換で出力画像の4頂点を算出してその算出点より逆変換を開始してしまうと、画像Aと画像Bとの間にマッピングされない箇所ができてしまうと考えております。 CGの世界ではテクスチャマッピングとして各テクスチャをアフィン変換などでマッピングしているようですが、この技術を使い大きな画像を小さなテクスチャとして扱いマッピングできないかとも考えたのですがその場合も上記問題と同じ問題がでてきてしまいます。 そもそも大きな画像を小さな画像に分割してアフィン変換を行うという事は不可能なのでしょうか?

  • バイキュービック補間のプログラム

    現在画像処理のバイキュービック補間のプログラムを作成しているのですがうまくいきません。 手元にソースがないのでお見せできないのですが。 手順としては次のように行っています。 (グレースケール画像) ・点Pの周囲の16画素の色と座標を取る ・点Pと周囲の16座標の距離dを配列に入れる。  (計算式はc*c = a*a + b*bの直角三角形の定理を使用しています) 例)P00とPの距離 a = Px - P00x … xの距離 b = Py - P00y … yの距離   d = sqrt(a*a +d*d) ・距離dにより重みWを決定する。 0 <= d <= 1 W = 1 - 2・d・d + d・d・d 1 < d <= 2 W = 4 - 8・d + 5・d・d + d・d・d 2 < d W = 0 ・各重みと各距離をかけてそれらを合計したものが色になる。 SUMW += W * d[i] Color = SUMW 以上のような方法で行っています。 バイキュービックとしてこれはあっているのでしょうか? プロラムした結果としては アフィン変換後の結果はTVの嵐のような画像になってしまいます。 アフィン変換を角度0、移動0にすると、エッジのような画像が出来上がります。 なにが初心者でも画像処理がわかりやすい書籍等があったら教えていただけると助かります。 よろしくお願いいたします。

  • VBを使って行列による3Dの図形やグラフを描画するのですが・・

    本をよんでいるのですが自分の創造した図形の3D座標を2Dの座標に変換する仕方やその点の座標をどのように行列に当てはめるのかがわかりません。行列での回転・縮小拡大の仕方などが・・。 3Dの描画や行列に詳しい方教えてほしいです。 もし詳しくなくても関係のあるVBサイトがあれば教えてほしいです。 お願いします。

  • Vixでリサイズする時の設定

    1000万画素で撮影し、ホームページに載せるために、800X530にリサイズします。 Vixというフリーソフトを使わせてもらっていますが、リサイズの時、 (1)フォーマットで画質の%(デフォルトが85%になっている)について。 (2)リサイズの方法で3次補間、平均化、単純拡大縮小の3つのどれがいいのか。 など、教えてください。

  • VBを用いた対話型図形処理

    VB6で以下のような簡単な図形を扱うプログラムを作りたいのです。どこからとっかかればいいか教えてください。VBの経験は長いのですが図形処理は初めてです。 (1)描かれた線の上にマウスカーソルを置くと、線の長さを表示する。 (2)描画枠の隅にカーソルを持って行くと、カーソルの形が変わって、それをドラッグすると描画枠が変形する。(描画図形を拡大/縮小したい)

  • VB.NETでの画像処理について

    初めて書き込みます。 現在VB.NETと画像処理を勉強中です。 最終的には、画像を取り込んで画像の被写体の縦と横の長さをVB.NETから求めるのが目的です。 現在画像の色情報から輝度を求め、その画素数をカウントしてヒストグラムを求めるところまでは、おぼろげながら理解できています。しかし、画素数をカウントし縦と横の長さを求めるプログラムの作り方がわかりません。 解る方がいましたらぜひおしえてください。 ※画像処理についてですが、プログラムが関わっているので書き込みました。カテゴリーが違っていたらすいません。

  • VBの質問です

    VB6を使って開発をしています。 AとB2つのMDBがあってAの全テーブルのデータをBの全テーブルにデータをコピーしたいのですがプログラムでどうやるのかがわかりません。 どなたかわかるかた私に教えてください。お願いします。

  • VBの印刷について

    VB6で、自作アプリケーションを作成中ですが、 そこで、PrintForm関数でフォームをハードコピーしています。 ピクチャーボックスにスクロールバーを使って画面を制御していますのでprintformを使うと 全てが印刷されません。 やりたいことは、2画面分のハードコピーを 1枚にして印刷したいのですが、どうやればよろしいでしょうか? 2枚分(A4+A4)(縮小) ------> 1枚(A4)ということです。 どなたか、アドバイスいただければ幸いです。よろしくお願いします。

  • 拡大縮小コピー

    EP-976A3で拡大縮小(A4→A3又はA4→B5)コピーの方法。

専門家に質問してみよう