Pokaż wyniki 1 do 1 z 1

Temat: kodowanie.. pomocy!!!

  1. #1
    Zarejestrowany
    Oct 2006
    Postów
    1

    Domyślnie kodowanie w mapie bitowej

    mam taki programik ciekawy... koduje tekst w mapie bitowej... mógłby ktoś "rzucic okiem" i pomóc mi chociaż trochę skrócić ten kod? próbuj ę cały czas ale jak skracam, to źle działa jakby sie komus chcialo...

    Kod:
    //----------------------------------------------------------------
    TColor TForm1::zakoduj(bool b1,bool b2, bool b3, TColor c)
    {
     long rob=1;
     rob=rob<<8;
     rob+=1;
     rob=rob<<8;
     rob+=1;
     c = c | rob;  //pierwszy, dziewiąty i siedemnasty bit w c jest jedynką
     rob = 0xFE;
     rob+=b3;
     rob=rob<<8;
     rob+=0xFE;
     rob+=b2;
     rob=rob<<8;
     rob+=0xFE;
     rob+=b1;
     c = c & rob;
     return c;
    }
    //-----------------------Kodowanie----------------------------------------
    void __fastcall TForm1::Koduj1Click(TObject *Sender)
    {
     long dl_wiad = Memo1->Lines->Text.Length();
     Label5->Caption=IntToStr(dl_wiad);
     if(dl_wiad<=dl_max)
     {
      //ukrywanie informacji w obrazku
      long i=0,j=0; //współrzędne bieżącego piksela
      char znak;
      int bp=0;     // ilosc bitow przeniesionych (niezakodowanych) z poprzedniego znaku
      long szer=i1->Picture->Bitmap->Width;
      long wys=i1->Picture->Bitmap->Height;
      TColor piksel;
      bool b1,b2,b3;
      for(int k=1;k<=dl_wiad;k++)
      {
       piksel=i1->Picture->Bitmap->Canvas->Pixels[i][j];
       znak=Memo1->Lines->Text[k];
       if(bp==0) //o bitów przeniesionych
       {
        b1=znak%2;
        znak/=2;
        b2=znak%2;
        znak/=2;
        b3=znak%2;
        znak/=2;
        i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
        i++;
        if (i>szer) {i=0; j++;}
        b1=znak%2;
        znak/=2;
        b2=znak%2;
        znak/=2;
        b3=znak%2;
        znak/=2;
        i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
        i++;
        if (i>szer) {i=0; j++;}
        b1=znak%2;
        znak/=2;
        b2=znak%2;
        bp=2;
       }
       else if(bp==1)
       {
        b2=znak%2;
        znak/=2;
        b3=znak%2;
        znak/=2;
        i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
        i++;
        if (i>szer) {i=0; j++;}
        b1=znak%2;
        znak/=2;
        b2=znak%2;
        znak/=2;
        b3=znak%2;
        znak/=2;
        i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
        i++;
        if (i>szer) {i=0; j++;}
        b1=znak%2;
        znak/=2;
        b2=znak%2;
        znak/=2;
        b3=znak%2;
        znak/=2;
        i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
        i++;
        if (i>szer) {i=0; j++;}
        bp=0;
       }
       else //bp=2
       {
         b3=znak%2;
         znak/=2;
         i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
         i++;
         if (i>szer) {i=0; j++;}
         b1=znak%2;
         znak/=2;
         b2=znak%2;
         znak/=2;
         b3=znak%2;
         znak/=2;
         i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
         i++;
         if (i>szer) {i=0; j++;}
         b1=znak%2;
         znak/=2;
         b2=znak%2;
         znak/=2;
         b3=znak%2;
         znak/=2;
         i1->Picture->Bitmap->Canvas->Pixels[i][j]=zakoduj(b1,b2,b3,i1->Picture->Bitmap->Canvas->Pixels[i][j]);
         i++;
         if (i>szer) {i=0; j++;}
         b1=znak%2;
         bp=1;
       }
      }
      i1->Picture->Bitmap->Canvas->Refresh();
     }
     else
     MessageDlg("Za długa wiadomość!",mtError,TMsgDlgButtons()<<mbYes,0);
     }
    //-------------------------------------------------------------------------
    Ostatnio edytowane przez Agusia : 10-30-2006 - 14:33

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj