DrawRotaGraphF相当のコード TurnFlag

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
みけCAT

DrawRotaGraphF相当のコード TurnFlag

#1

投稿記事 by みけCAT » 15年前

http://www.play21.jp/board/formz.cgi?ac ... &rln=63031
の続きです。
DrawRotaGraphFに回転などを実装しているのですが、
TurnFlagが効かないようです。
どこが悪いかわかる方がいらっしゃいましたら教えていただければ幸いです。
kaiten関数は
http://www.play21.jp/board/formz.cgi?ac ... &rln=63052
のものです。
function.cppのDrawRotaGraphFの下に貼りつけました。
int DrawRotaGraphF(HDC to,int x,int y,float ExtRate,float Angle,
        gazou* graph,int TransFlag,int TurnFlag) {
    HDC gazoufordraw;
    HDC scaledgazou;
    HBITMAP oldbmp;
    HBITMAP scalebmp;
    HBITMAP scaleoldbmp;
    int sx,sy;
    int dx,dy;
    double rx,ry;
    COLORREF col;
    sx=(int)(graph->sizex*ExtRate);
    sy=(int)(graph->sizey*ExtRate);
    gazoufordraw=CreateCompatibleDC(to);
    scaledgazou=CreateCompatibleDC(to);
    scalebmp=CreateCompatibleBitmap(to,sx,sy);
    oldbmp=(HBITMAP)SelectObject(gazoufordraw,graph->bmp);
    scaleoldbmp=(HBITMAP)SelectObject(scaledgazou,scalebmp);
    StretchBlt(scaledgazou,0,0,
        sx,sy,
        gazoufordraw,graph->x,graph->y,graph->sizex,graph->sizey,
        SRCCOPY);
    for(dy=0;dy<sy;dy++) {
        for(dx=0;dx<sx;dx++) {
            if(TurnFlag)col=GetPixel(scaledgazou,sx-dx,dy);
            else col=GetPixel(scaledgazou,dx,dy);
            col=GetPixel(scaledgazou,dx,dy);
            kaiten(&rx,&ry,x,y,x+dx-sx/2,y+dy-sy/2,Angle);
            if(!TransFlag || col!=RGB(255,255,255)) {
                SetPixel(to,(int)rx,(int)ry,col);
            }
        }
    }
    SelectObject(gazoufordraw,oldbmp);
    SelectObject(scaledgazou,scaleoldbmp);
    DeleteObject(scaleoldbmp);
    DeleteDC(gazoufordraw);
    DeleteDC(scaledgazou);
    return 0;
}
(編集)</pre>をつけ忘れました。 画像

迷彩吹雪

Re:DrawRotaGraphF相当のコード TurnFlag

#2

投稿記事 by 迷彩吹雪 » 15年前

for文の中にある
if(TurnFlag)col=GetPixel(scaledgazou,sx-dx,dy);
      else col=GetPixel(scaledgazou,dx,dy);
      col=GetPixel(scaledgazou,dx,dy);
if(TurnFlag){
         col=GetPixel(scaledgazou,sx-dx,dy);
      }
      else{
         col=GetPixel(scaledgazou,dx,dy);
      }
      col=GetPixel(scaledgazou,dx,dy);
と同義ですよね?
ならば、TurnFlagに関わらず
col=GetPixel(scaledgazou,dx,dy);
が実行されてしまうのではないでしょうか。
私が若輩者でどんな処理をされているか良くわかっていないので、見当違いだったらすみません……。

みけCAT

Re:DrawRotaGraphF相当のコード TurnFlag

#3

投稿記事 by みけCAT » 15年前

その通りでした。
下のcol=GetPixel(scaledgazou,dx,dy);を消したら動きました。
ありがとうございました。

ただ、拡大をかけるとかなり重いようなのでまた改良したいと思いますが...

閉鎖

“C言語何でも質問掲示板” へ戻る