TImageListに設定しているbmpをTImageに貼り付けると画像に赤い線が入る

このQ&Aのポイント
  • C++Builder5.0で開発している際に、TImageListのbmp画像をTImageに貼り付けると、意図しない箇所に赤い線が描画される現象が発生した。
  • この現象は、Windows98でC++Builderがインストールされていないパソコンのみで発生し、他のOSでは発生しない。
  • 解決策を求めているが、どうすればいいかわからない。
回答を見る
  • ベストアンサー

TImageListに設定しているbmpをTImageに貼り付けると画像に赤い線が入る

現在C++Builder5.0で開発をしているのですが、まったく判らない現象が発生してしまいましたので質問させていただきます。 TImage Listにいくつかのbmp画像を設定してボタンを押下するとImageにそのbmp画像を貼り付けていく処理をしていたところ、貼り付けた後の画像を見ると意図していない箇所に赤い縦線が描画される現象が発生してしまいました。 その現象は発生するパソコンとしないパソコンがあり 発生するパソコンは、 Windows98、C++Builderがインストールされていないパソコンのみ該当するようです。 Windows98、C++BuilderがインストールされているパソコンおよびWindowsXPのパソコンではその現象が発生しませんでした。 どうしたらいいのかもわかないかんじですのでよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#20242
noname#20242
回答No.1

サービスパック1はインストール済みでしょうか? インストール済みでこの現象が発生するのであれば、Win98のグラフィックドライバなどが最新版になっているかどうか確認することをお勧めします。 あと、正常動作するPCと正常動作しないPCとで、画面の解像度が違うなどはございませんか?

Simanohito
質問者

お礼

ご回答ありがとうございます。 解像度を正常に動作するパソコンの設定と同じにしたら問題は解決致しました。 ありがとうございました。 何故、解像度が違うことでそのような事が発生するのでしょうか?

その他の回答 (1)

noname#20242
noname#20242
回答No.2

>何故、解像度が違うことでそのような事が発生するのでしょうか? パソコン歴18年のカンですので、はっきりとしたことはわかりません。 表示可能色数の違いやリフレッシュレートなどの影響かもしれませんし、グラフィックドライバにおけるソフトウェアのつくりにもよると思います。

Simanohito
質問者

お礼

ご回答ありがとうございました。 問題の原因が理解できました。 今後そのような事も考えながらソフトを作成したいと思います。

関連するQ&A

  • 24bmpと256bmpの違い

    Windowsのペイントで作成した画像や文章を最初Jpegで保存していましたが、文字がにじむので24bmpで保存しています。保存する時に256bmpというのがあるのですが24bmpと容量や画質に差はあるのでしょうか。パソコン初心者なので初歩的な質問ですいません。

  • C++Builder5で画像の結合

    C++Builder5で複数の画像を1つの画像にして保存したいのですがそのような事は出来るのでしょうか? 画像の形式はbmpと考えております。

  • BMP画像を右クリックして「編集」を押すとPhotoshopが起動する

    Windows XP Pro SP3で、PhotoshopCS4を使っている者です。 BMP画像のファイルを右クリックして、「編集」や「preview」を押すと、 どちらの場合もフォトショップが起動してしまいます。 フォトショップをインストールする以前のように、「編集」を押すとペイントが、 「プレビュー」を押すとWindows Picture and Fax Viewer(XP標準の画像ビューア)が 起動する設定に戻すにはどうすればいいでしょうか? ちなみに、BMPファイルはWindows Picture and Fax Viewerに関連付けてあるのに、 こういった現象が起きてしまいます。

  • ネットで画像保存のとき画像の形式が変わる。なぜ?(jpg⇒bmp)

    インターネットをしてて画像をクリックして別ウィンドウで開くと、その画像のアドレスは最後が「~jpg.」となっているのに、保存しようとして保存のボタンを押すと画像の拡張子が「~bmp.」ビットマップになることがよくあるんですが、これは私のパソコンの問題なのでしょうか。それとも何か別に問題があるのでしょうか。

  • WEB画像の保存設定について

    WEB内のJPG画像を保存するためマウスを右クリックし、「名前を付けて画像を保存」をクリックしますと、これまではJPG画像は「ファイルの種類」で「JPG」または「BMP」を選べたのですが、「BMP」だけしか選択できなってしまい困っています。 保存設定を元に戻す方法を教えていただけませんでしょうか? ※ QNo.218357で過去に質問し1度は解決したのですが、また同じ現象が発生し、過去の回答の方法ではだめでした。 何度もすみませんが、よろしくお願いします。

  • jpg画像を保存しようとするとbmpになってしまう

    web上でjpg画像を保存しようとするとbmpしか選択できず困っています。姉や兄のパソコンではjpgで保存できます。こちらで検索し以下の 3つの方法を試しましたがだめでした。 1.Temporary Internet Files フォルダを空にしました 。 2.Downloaded Program Files]の[状態] 列に 不明、壊れています の表示はありませんでした。 3.Temporary Internet Files フォルダを別の場所に移動し再起動しました。 WindowsはXP SP3です。 Web上のjpg画像は果物や野菜の130kbほどの画像です。どうかよろしくお願いします。

  • ピクチャボックスに描画した画像の保存

    VB6.0にて、 http://www.uploda.org/uporg898462.jpg このようなものを作成しました。 折れ線グラフはプログラムにて後から描画したもの、 それ以外の目盛りなどは最初からピクチャボックスに描画してあるものです。 pic1,pic2は共にピクチャボックスです。 赤い線で囲まれたpic1を目盛り、グラフ、その他のテキストボックスや文字と共に画像として保存したいのですが、 SavePicture Pic1.Image, "C:\SaveTest2.bmp" とすると、pic1の大きさの、何も描画されていない真っ白な画像が保存されてしまいます。 また、SavePicture Pic2.Image, "C:\SaveTest2.bmp" (pic2の保存) とすると、折れ線グラフのみが描画され、目盛りは無くなった画像が保存されてしまいます。 2つのピクチャ共にAutoRedraw=Trueを設定しています。 pic1を上手く保存する方法は無いでしょうか? ご教授、お願いします。

  • C# 画像ファイルの更新

    C#を始めて2ヶ月余りの者です。 環境はW.7 C#.NET 2013です。 現在、以前C-Builderで作成したプログラムをC#に変換して居ます。 画像マスターを変更する所で、コンパイル出来なく成り、困って居ます。 やりたい事は、画像マスターがあり、これを表示して、マスターを変更したければカメラから読み込んだ画像を画像マスターに書き込むと言うものです。 C-Builderの時はBMPの読み書きは自分で作成しましたが、C#では関数があるので今回はこれを利用しました。 内容を簡略的に下に記述しました。AAAが画像マスターでBBBがカメラからの画像の代わりです。 ここで bmpSource1.Save(sCurDir + "\\BBB.bmp"); を実行すると、「別のプロセスで使用されているため、プロセスは ファイル~にアクセスできません。」とのエラーが表示されます。 良く考えてみれば、Readでオープンしている所に書き込もうとして居るのでエラーに成って当たり前ですので、bmpSource1 = new Bitmap(sCurDir + "\\AAA.bmp");の後に画像を別の場所に保存し、bmpSource1.Dispose();としてみた所、上手く行きませんでした。これもDisposeするのはバッファーであり、ファイルでは無いから当たり前かも知れません。 ネットで色々探して居る時に、何かのパラメーターでReadWriteモードの所を見つけましたが、bmpSource1 = new Bitmap(sCurDir + "\\AAA.bmp");には指定するパラメーターが見当たりませんでした。 何方か、画像ファイルの更新方法がお分かりに成る方、ご教授下さい。 よろしくお願い致します。 String sCurDir = System.IO.Directory.GetCurrentDirectory(); Bitmap bmpSource1; Bitmap bmpSource2; public Form1() { InitializeComponent(); pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; bmpSource1 = new Bitmap(sCurDir + "\\AAA.bmp"); bmpSource2 = new Bitmap(sCurDir + "\\BBB.bmp"); pictureBox1.Image = bmpSource1; bmpSource2.Save(sCurDir + "\\AAA.bmp"); <-ここで実行時エラー }

  • WindowsAPIでの画像表示について

    コード(一部): http://fatalita.sakura.ne.jp/goo/img/APIcode.jpg 本当はこうしたかった実行結果: http://fatalita.sakura.ne.jp/goo/img/Run2.jpg 実際の実行結果: http://fatalita.sakura.ne.jp/goo/img/Run.jpg 現在Windowsプログラミングでウィンドウプロシージャの WM_CREATE 内で仮想画面にtest.bmpを読み込み、 さらにその後に仮想画面に大きな赤い四角形を描画させて WM_PAINT で裏画面をウィンドウに描画させているのですが、 何故かこのコードを実行すると画像ファイル test.bmpの大きさの範囲内でしか赤い四角形が描画されません。 これは何が悪いのでしょうか・・? 開発環境はWinXP / VisualStudio 2005です。 後、WND_SIZE_XとWND_SIZE_Yはそれぞれウィンドウのサイズを表しています。

  • Opencv画像処理 bmp処理

    常々自分の理解力の無さに呆れるyuki-yutoです。 今回はOpencvで作ったプログラムと別のプロジェクトで作ったプログラムをソースをコピーして一つにしたところ、オバーフロー?してしまうらしくプログラムが実行できません。 二つ別々なら動くので関数の受け渡しが悪いのでしょうか? 今回の処理の目的は Opencvでキャプチャ→bmpで保存→(書いていませんが)for文でRGBの量を求める→一定量のRが検出されればショートカットを起動する というものです。 RGBに関してはfor(i=0;i<width;i++)とかでまわしているソースを何処かで見た気がするのですが、bmp処理は疎いので正直RGBをどうやって出すかまだ良くわかっていません。 widthまでを使っているあたり1pixel毎配列にでも記録させているのでしょうか・・・? #include <stdio.h> #include <Windows.h> //bmp読み込み,ショトカ #include<iostream> #include <C:\OpenCV2.1\include\opencv\cv.h> #include <C:\OpenCV2.1\include\opencv\highgui.h> #ifdef _DEBUG //Debugモードの場合 #pragma comment(lib,"C:\\OpenCV2.1\\lib\\cv210d.lib") #pragma comment(lib,"C:\\OpenCV2.1\\lib\\cxcore210d.lib") #pragma comment(lib,"C:\\OpenCV2.1\\lib\\cvaux210d.lib") #pragma comment(lib,"C:\\OpenCV2.1\\lib\\highgui210d.lib") #else //Releaseモードの場合 #pragma comment(lib,"C:\\OpenCV2.1\\lib\\cv210.lib") #pragma comment(lib,"C:\\OpenCV2.1\\lib\\cxcore210.lib") #pragma comment(lib,"C:\\OpenCV2.1\\lib\\cvaux210.lib") #pragma comment(lib,"C:\\OpenCV2.1\\lib\\highgui210.lib") #endif #include <math.h> #include <stdlib.h> int main(void){ //画像保存用 char str[32];//大きさは多く取っておいたほうが良いかも?640*480対応できるように。 //キー入力用 int key; //カメラの用意 CvCapture *capture; IplImage *frame = NULL; //カメラ画像用 //カメラ・デバイスの先頭ポインタを取得 capture = cvCaptureFromCAM(-1); //カメラ画像のサイズ double height = 240; double width = 320; //カメラ初期化 if(capture == NULL){ //カメラが見つからなかった場合 printf("カメラが見つかりません\n"); return (0); } //カメラ画像を表示するウィンドウの生成 cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, height); cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, width); cvNamedWindow("CaptureFromCamera", CV_WINDOW_AUTOSIZE); //キー入力されたら画像をキャプチャ while(1){ //カメラ画像からフレーム画像を取り込む frame = cvQueryFrame(capture); if(frame == NULL) break; //画像の表示 cvShowImage("CaptureFromCamera", frame); //sキー入力で画像を保存、Escキー入力でループから抜ける key = cvWaitKey(10); if(key == '\x1b') break; else if(key == 's'){ sprintf_s(str, "Capture_Bitmap.bmp"); cvSaveImage(str, frame); } } //ウィンドウの破棄 cvDestroyWindow("CaptureFromCamera"); } //ここからキャプチャしたbmp処理。 int main( int argc, char *argv[] ){ FILE *fp; //ポインタ、読み込み専用 BITMAPFILEHEADER bfh; //ファイルヘッダ BITMAPINFOHEADER bmpinfo; //情報ヘッダ //BMPファイルがあるかどうかチェック if((fp=fopen("Capture_Bitmap.bmp","rb"))==NULL){ printf("ファイルが見つかりません"); exit(1); } //BMPファイルか確認 fread(&bfh, 14, 1, fp); //ファイルヘッダ読み込み,ってかファイルヘッダの1~14を読み込む if(memcmp(&bfh.bfType,"BM",2)) //BMPファイルかチェック、2バイト位置にBMがあるか printf("BMPファイルではありません"); fread(&bmpinfo, 40, 1, fp); //情報ヘッダ読み込み printf("データの大きさは%dMB\n",(bmpinfo.biSizeImage+bmpinfo.biSize)/1000000); //表示サイズ調節 //何色BMPファイルか返却値で判定 switch(bmpinfo.biBitCount){ case 1: printf("2色ビットマップ\n"); break; case 4: printf("16色ビットマップ\n"); break; case 8: printf("256色ビットマップ\n"); break; case 24: printf("1677色ビットマップ\n"); break; case 32: printf("1677色ビットマップ\n"); break; } //ココでRGBを抽出する、確かforを二回bmpの縦と横の最大値まで繰り返し、何か変数に入れるソースを見た気が・・・? printf("インターネット ショートカット を起動します。Enterを押してね"); getchar(); //ショトカ起動文。Windows.hでデスクトップにショートカットを指定。 fclose(fp); rewind(stdin); getchar(); }

専門家に質問してみよう