線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:964
推到 Plurk!
推到 Facebook!

一個基本圖形配對的程式~~在迴圈搜尋(for)和判斷式的撰寫有問題!!

尚未結案
vinbaby
一般會員


發表:10
回覆:5
積分:3
註冊:2005-07-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-16 01:02:53 IP:220.228.xxx.xxx 未訂閱
我現在正在撰寫一個簡單的圖型配對的程式~~    不過發現ㄧ些問題~~想請問一些知道的大大~~    1.我的for迴圈這樣撰寫對嗎? 2.判斷式這樣撰寫對嗎?    我有一張大的影像A~~和一張小的影像B~~~而B是從A中切割出來的~~ 所以一定會配對成功~~不過我的程式好像不對~~~它可以run不過卻不是我要的執行 一按下配對按鈕~~圖形A和B就消失了~~~@@ 以下我附上我所寫的程式碼~~~  
 
#include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Graphics:: TBitmap  *TheBitmap , *TheBitmap1;
  Byte *ptr;
  int x,y,a,b;   //x.y是大張影像的寬.高   a.b是小張影像的高.寬
  int sum;
  TheBitmap=Image1->Picture->Bitmap;
  TheBitmap1=Image2->Picture->Bitmap;  //這邊不是說要把指標定好~~把指標指在影像的每一個pixel嗎??  
                                         我原本TheBitmap=Image2->Picture->Bitmap;是這樣寫的~~
                                         不過有大大指出我這有問題~~所以我有看了一下一些參考程式想想~~TheBitmap1=Image2->Picture->Bitmap;
                                         好像才是對的
  for (y=0;yScanLine[y];
     for (x=0;x<(x-b);x=x+b)    
     {
       ptr=(Byte*)TheBitmap->ScanLine[x];
         for (a=0;aHeight;a++)
           {
               ptr=(Byte*)TheBitmap1->ScanLine[a];
               for (b=0;bWidth;b++)
               {
                sum=(ptr[y*3]-ptr[a*3])+ (ptr[y*3+1]-ptr[a*3+1])+
                    (ptr[y*3+2]-ptr[a*3+2]);  //判斷式
                sum=(ptr[x*3]-ptr[b*3])+ (ptr[x*3+1]-ptr[b*3+1])+
                    (ptr[x*3+2]-ptr[b*3+2]); //判斷式
                }
            }
       }
   }
   if(sum=0)
    {
     ptr[a*3]=ptr[y*3];
     ptr[a*3+1]=ptr[y*3+1];
     ptr[a*3+2]=ptr[y*3+2];
     ptr[b*3]=ptr[x*3];
     ptr[b*3+1]=ptr[x*3+1];
     ptr[b*3+2]=ptr[x*3+2];
    }
    Repaint();
}
//---------------------------------------------------------------------------
以下是我的程式介面: 發表人 - vinbaby 於 2005/07/16 11:35:32
liangnet
中階會員


發表:19
回覆:148
積分:83
註冊:2004-01-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-16 09:17:25 IP:61.219.xxx.xxx 未訂閱
TheBitmap=Image1->Picture->Bitmap;   TheBitmap=Image2->Picture->Bitmap; 紅色這一行應該是打錯吧? a、b變數初始值??你似乎沒先指定哦
vinbaby
一般會員


發表:10
回覆:5
積分:3
註冊:2005-07-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-16 11:37:55 IP:220.228.xxx.xxx 未訂閱
引言: TheBitmap=Image1->Picture->Bitmap; TheBitmap=Image2->Picture->Bitmap; 紅色這一行應該是打錯吧? a、b變數初始值??你似乎沒先指定哦 你好~~~~ TheBitmap=Image2->Picture->Bitmap; 這行我改了一下~~~您覺得這樣改對嗎~~??(上文我有修改) 另外~~a、b變數初始值~~~ㄟ~~怎麼定啊~~??不是一開始都是0嗎??
系統時間:2024-05-18 6:36:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!