アプリ版:「スタンプのみでお礼する」機能のリリースについて

プログラム上での画像作成というのはできるのでしょうか?
例えば、関数を使って、tukutu(100,100); ※(xsize,ysize)
100*100サイズの画像を作るといったことはできるのでしょうか?
しかし、作ったものをpicture1などに貼り付けられるものでないといけません。

もしくは、画像のリサイズを考えています。
例えば、rsize("a.bmp",100,100);  ※("元画像",xsize,ysize)
といった感じで、もともとある画像を100*100のサイズに変える方法でもいいのですが。
画像の縮小拡大など難しいことは使わないで、もし指定のサイズより元画像が小さかったらあまりの部分に白領域を足して、大きかったら削ってしまうといった具合です。

とにかくプログラム上で指定したサイズでの画像を作成したいです。
ソフトはビジュアルスタディオを使っています。
分かる方がいましたらよろしくお願いします。

A 回答 (3件)

 画像を送付したのですが、表示されない様です(駄目だこりゃ)。


 と言う事で、もう一度。
「プログラム上で画像作成」の回答画像3
    • good
    • 0

 こんばんは。

補足頂きました。

 う~む、チョッと不明瞭ですな。

>>CLIというのが何なのかよくわかりませんでしたが、おそらくエラーばかりでてしまうので違うものなのではないかと思います。
 ビジュアルスタジオの「C++」である事は間違いなさそうでしょうか?
 でしたら、
 (1)を右クリック
 (2)に「共通言語ランタイムサポート(/clr)」を選択すれば其のまま使える筈。

 此れで無理であるならば、別の言語の可能性があります。
「プログラム上で画像作成」の回答画像2
    • good
    • 0

 こんばんは。



 picture1と書いてありますが、C++CLIの方でしょうか?
 LoadImage()APIを使用すれば、画像の読み込みと同時にリサイズ(
ストレッチ)も出来ます。

#ifndef __BITMAP_H__
#define __BITMAP_H__

#include<windows.h>
#pragma comment(lib, "gdi32.lib")

//C++用
inline HBITMAP WINAPI LoadMyImage(LPCWSTR lpwstrFileName, int iWidth, int iHeight)
{
HBITMAP hBmp = static_cast<HBITMAP>(::LoadImage(NULL, lpwstrFileName, IMAGE_BITMAP, iWidth, iHeight, LR_LOADFROMFILE | LR_CREATEDIBSECTION));
return hBmp;
}

//C++/CLI用
inline System::Drawing::Bitmap^ LoadMyImage(System::String^ sFileName, int iWidth, int iHeight)
{
using namespace System::Runtime::InteropServices;
//String^からLPCWSTRへ文字列変換
System::IntPtr iPtrUni = Marshal::StringToHGlobalUni(sFileName);
//ビットマップを読み込む
HBITMAP hBmp = ::LoadMyImage(static_cast<LPCWSTR>(iPtrUni.ToPointer()), iWidth, iHeight);
//変換に割り当てたメモリを消す
Marshal::FreeHGlobal(iPtrUni);
//HBITMAPを元にBitmapクラスを作成
System::Drawing::Bitmap^ bmp = System::Drawing::Bitmap::FromHbitmap(System::IntPtr(hBmp));
//HBITMAPを消去
::DeleteObject(hBmp);
return bmp;
}

#endif

 使用する時(例えば、ダイアログからファイルを選択してロードする時)

private: System::Void 開くStripMenuItem1_Click(System::Object^ sender, System::EventArgs^ e)
{
//ファイルダイアログの準備
OpenFileDialog^ myDLG = gcnew OpenFileDialog();
myDLG->AddExtension = true;
myDLG->DefaultExt = "bmp";
myDLG->FileName = "*.bmp";
myDLG->ShowReadOnly = false;
myDLG->Filter = "ビットマップ(*.bmp) | *.bmp | jpeg(*.jpg;*.jpeg) | *.jpg;*.jpeg";
//決定された
if(myDLG->ShowDialog() == System::Windows::Forms::DialogResult::OK)
{
this->Text = myDLG->FileName;
//ビットマップの読み込み
pictureBox1->Image = ::LoadMyImage(this->Text, 200/*任意の横幅*/, 200/*任意の縦幅*/);
//ピクチャボックスを更新する
Invalidate();
}
}
    • good
    • 0
この回答へのお礼

こんばんわ^^
回答ありがとうございます。

CLIというのが何なのかよくわかりませんでしたが、おそらくエラーばかりでてしまうので違うものなのではないかと思います。

私が使っているのは、ビジュアルスタディオのCRL→フォームアプリケーションというものなのですが、このプログラムのどこかだけを使えばできるんでしょうか??

お礼日時:2008/12/17 18:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!