⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zoomosd.c

📁 M3355的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
    BYTE lcolor,dcolor;
    BYTE str[16] = {'\0','1','\0','0','\0','0','\0','%','\0','\0',};
	BYTE zoomstr[32]=
        {
		   '\0','Z','\0','o',//0-3
		   '\0','o','\0','m',//4-7
		   '\0',' ','\0',' ',//8-11
		   '\0','\0','\0','\0'//12-15
		   
        };
    BYTE  ratio;

 	BaseRect upBrct=
        {
            {ZOOM_LEFT,ZOOM_TOP,ZOOM_LEFT+ZOOM_WIDTH,ZOOM_TOP + ZOOM_UP_HEIGHT},
            //248,30,30//maggie
			//251,113,220 gushun
            251,95,197

        };
	BaseRect downBrct=
    {
            {ZOOM_LEFT,ZOOM_TOP+ZOOM_UP_HEIGHT+1,ZOOM_LEFT+ZOOM_WIDTH,ZOOM_TOP + ZOOM_UP_HEIGHT+ZOOM_DOWN_HEIGHT+1},
		
            251,95,197

        };		//-->Alan, top+1, bottom+1, bug fix for 160

	RECT strRect={ZOOM_LEFT+ZOOM_TXT_LEFT,ZOOM_TOP+ZOOM_UP_HEIGHT,ZOOM_LEFT+ZOOM_WIDTH,ZOOM_TOP+ZOOM_UP_HEIGHT+ZOOM_DOWN_HEIGHT};//MAGGIE

    ratio=zoomRatio;

    if(fromZero)  
    {
       OffsetRect(&upBrct,-ZOOM_LEFT, -ZOOM_TOP);
	   OffsetRect(&downBrct,-ZOOM_LEFT, -ZOOM_TOP);
	   OffsetRect(&strRect,-ZOOM_LEFT, -ZOOM_TOP);
    }
	//draw zoom up portion. 
    DrawBaseRect(hdc,&upBrct);
    //draw the down portion.
    DrawBaseRect(hdc,&downBrct);     

    //for efficiency
    if(zoomRatio==4)
    {
        range = ZOOM_RANGE_4X;
        ratio=2;
    }
    else if(zoomRatio==16)
    {
        range = ZOOM_RANGE_16X;
        ratio=4;
    }
    //-----------------------------
	
    InflateRect(&upBrct.rect,-(upBrct.rect.right-upBrct.rect.left)*(ratio-1)/(ratio*2),-(upBrct.rect.bottom-upBrct.rect.top)*(ratio-1)/(ratio*2));

    //OffsetRect(&br.rect,(br.rect.right-br.rect.left)*xOffset*(zoomRatio-1)/2/range,(br.rect.bottom-br.rect.top)*yOffset*(zoomRatio-1)/2/range);
    OffsetRect(&upBrct.rect,(upBrct.rect.right-upBrct.rect.left)*xOffset*(ratio-1)/2/range - 6*xOffset/range,
               (upBrct.rect.bottom-upBrct.rect.top)*yOffset*(ratio-1)/2/range -4*yOffset/range);//for let the inside frame not go out

    DrawZoomInsideFrame(hdc, &(upBrct.rect));

    //draw the arrow
    lcolor = 26;//236;//155;//maggie
    dcolor = 26;//236;//230;//maggie

    SetRect(&r, upBrct.rect.left,upBrct.rect.top,upBrct.rect.right,upBrct.rect.bottom);
    DrawZoomArrow(hdc,r.left + (r.right-r.left)/2,r.top,ZOOM_DIR_UP,lcolor,dcolor);
    DrawZoomArrow(hdc,r.left + (r.right-r.left)/2,r.bottom,ZOOM_DIR_DOWN,lcolor,dcolor);
    DrawZoomArrow(hdc,r.left-2 ,r.top+(r.bottom-r.top)/2,ZOOM_DIR_LEFT,lcolor,dcolor);
    DrawZoomArrow(hdc,r.right+1 ,r.top+(r.bottom-r.top)/2,ZOOM_DIR_RIGHT,lcolor,dcolor);


	//draw the zoom string at the down portion .
    
	str[1]='0'+zoomRatio%10;
    if(zoomRatio>=10)
    {
        for(i=15;i>1;i--)
        {
            str[i]=str[i-2];
        }
        str[0]=0x00;
        str[1]='0'+zoomRatio/10;
    }
	for(i=0,j=12;j<30&&i<16;i++,j++)
	{
	  zoomstr[j]=str[i];
	}
	zoomstr[j]='\0';
    //SetTextColor(hdc,GetColorInDef256Palette(224));//maggie
    SetTextColor(hdc,GetColorInDef256Palette(233));//maggie
    //DrawText(hdc,str,-1,&strRect,DT_VCENTER | DT_RIGHT | DT_SINGLELINE | DT_CHARCLIP | DT_OPAQUE);//maggie
	DrawText(hdc,zoomstr,-1,&strRect,DT_VCENTER | DT_LEFT| DT_SINGLELINE | DT_CHARCLIP | DT_OPAQUE);
}

void DrawZoomInsideFrame(HDC hdc,LPRECT lpR)
{
    static BaseRect br=
        {
            {0,0,0,0},
          //  240,230,230//maggie
          251,26,26
        };
	
	BaseBmp bp ;
    HBRUSH hbr;

    //adjust
    InflateRect(lpR,-2,0);
	lpR->left-=2;
	lpR->right+=1;

    //first fill the back
    //hbr=CreateSolidBrush(GetColorInDef256Palette(240));//maggie
    hbr=CreateSolidBrush(GetColorInDef256Palette(251));//maggie
    FillRect(hdc, lpR,hbr);

    //then draw the edge
    //SetRect(&br.rect,r->left,r->top,r->right,r->bottom);
    CopyRect(&br.rect, lpR);
    br.leftEdgeColor=br.rightEdgeColor=26;//236;//230;//maggie
    DrawBREdge(hdc,&br);
   // br.rect.left--;//maggie
   // br.rect.top--;//maggie
   // DrawBREdge(hdc,&br);//maggie
   // br.leftEdgeColor=br.rightEdgeColor=236;//155;//maggie
   // OffsetRect(&br.rect,-1,-1);//maggie
   // DrawBREdge(hdc,&br);//maggie

    DeleteObject((HGDIOBJ)hbr);
    //pen = CreatePen(PS_SOLID, 1, GetColorInDef256Palette(br->leftEdgeColor));

    //draw zoom icon 
    bp.BmpID=IM_GUI_ZOOM;
	bp.width=ZOOM_ICON_WIDTH;
	bp.height=ZOOM_ICON_HEIGHT;
	bp.upperleftx=lpR->left+((lpR->right-lpR->left)-ZOOM_ICON_WIDTH)/2;
	bp.upperlefty=lpR->top+ ((lpR->bottom-lpR->top)-ZOOM_ICON_HEIGHT)/2 ;
   
	DrawBaseBmp(hdc,&bp);
}

void DrawZoomArrow(HDC hdc,int ox,int oy,BYTE direction,BYTE lightColor,BYTE DarkColor)
{
    HPEN lpen,dpen,oldPen;
    POINT p;
    BYTE i;
    int d=1;

    switch(direction)
    {
    case ZOOM_DIR_RIGHT:
    case ZOOM_DIR_DOWN:
        d=1;
        break;
    case ZOOM_DIR_LEFT:
    case ZOOM_DIR_UP:
        d=-1;
        break;
    default:
        d=1;
    }

    lpen = CreatePen(PS_SOLID, 1, GetColorInDef256Palette(lightColor));
    dpen = CreatePen(PS_SOLID, 1, GetColorInDef256Palette(DarkColor));

    oldPen = (HPEN)SelectObject(hdc, (HGDIOBJ)lpen);
    if((direction==ZOOM_DIR_RIGHT) || (direction == ZOOM_DIR_LEFT))
    {
        for(i=0;i<3;i++)
        {
            MoveToEx(hdc,ox , oy-i,NULL);
            LineTo(hdc,ox+6*d-(2*i*d),oy-i);
        }

        SelectObject(hdc, (HGDIOBJ)dpen);
        for(i=0;i<3;i++)
        {
            MoveToEx(hdc,ox , oy+i+1,NULL);
            LineTo(hdc,ox+6*d-(2*i*d),oy+i+1);
        }
    }
    else
    {
        i=0;
        for(i=0;i<3;i++)
        {
            MoveToEx(hdc,ox-i, oy,NULL);
            LineTo(hdc,ox-i,oy+(6 * d)-(2 * i * d));
        }
        SelectObject(hdc, (HGDIOBJ)dpen);
        for(i=0;i<3;i++)
        {

            MoveToEx(hdc,ox+i+1 , oy,NULL);
            LineTo(hdc,ox+i+1,oy+(6 * d)-(2 * i * d));
        }
    }

    SelectObject(hdc, (HGDIOBJ)oldPen);

    DeleteObject((HGDIOBJ)lpen);
    DeleteObject((HGDIOBJ)dpen);
}

//------
//screen fit
void ShowScreenFitWindow(BYTE stage)
{
//30910 gamble add for ScreenFit blink
    HBITMAP hbmp_comp,hbmp_old;
    HDC mhdc;
    mhdc = CreateCompatibleDC(gui_hdc);
    hbmp_comp = CreateCompatibleBitmap(gui_hdc,188,130);

    if(hbmp_comp==NULL)
        return ;
    hbmp_old = (HBITMAP)SelectObject(mhdc,(HGDIOBJ)hbmp_comp);
       
    DrawSFFrame(mhdc);
    DrawSFInsideFrame(mhdc);

    BitBlt(gui_hdc,
           ZOOM_LEFT,ZOOM_TOP,
           ZOOM_WIDTH,ZOOM_UP_HEIGHT+ZOOM_DOWN_HEIGHT-1,
           mhdc, 0, 0, SRCCOPY);

    SelectObject(mhdc,(HGDIOBJ)hbmp_old);
    DeleteObject((HGDIOBJ)hbmp_comp);
    DeleteDC(mhdc);
//end 30910 gamble add for ScreenFit blink
}
void DrawSFFrame(HDC hdc)
{
    RECT r;
    BYTE lcolor,dcolor;
    static BaseBmp bp =
        {
            IM_GUI_ZOOM_SCRN_FIT,
            ZOOM_ICON_LEFT,
            ZOOM_ICON_TOP,
            ZOOM_ICON_WIDTH,
            ZOOM_ICON_HEIGHT
        };
    BaseRect br=
        {
            {0,0,ZOOM_WIDTH,ZOOM_UP_HEIGHT},
            248,30,30

        };
    DrawBaseRect(hdc,&br);


    OffsetRect(&br.rect,0,ZOOM_UP_HEIGHT-2);
    br.rect.bottom += (ZOOM_DOWN_HEIGHT - ZOOM_UP_HEIGHT);
    br.bkColor = 255;
    DrawBaseRect(hdc,&br);
    //DrawBREdge(hdc,&br);

    DrawBaseBmp(hdc,&bp);

}

void DrawSFInsideFrame(HDC hdc)
{
    BYTE strLeftArrow[]={0xe0,0x15,0x00,0x00};
    BYTE strRightArrow[]={0xe0,0x16,0x00,0x00};
    BYTE strUpArrow[]={0xe0,0x17,0x00,0x00};
    BYTE strDownArrow[]={0xe0,0x18,0x00,0x00};


    BaseRect br;
    RECT rect;
    HBRUSH hbrush;

    rect.left=0;
    rect.top=0+ZOOM_UP_HEIGHT;
    rect.right = rect.left + ZOOM_WIDTH;
    rect.bottom = rect.top + ZOOM_DOWN_HEIGHT-2;

    hbrush=CreateSolidBrush(GetColorInDef256Palette(230));

    SetTextColor(hdc, GetColorInDef256Palette(30));
    InflateRect(&rect,-ZOOM_SF_LEFT,-ZOOM_SF_TOP);
    CopyRect(&br.rect,&rect);

    //first draw the yellow region
    InflateRect(&rect,ZOOM_SF_LEFT*bZoomHRatio/(SCREEN_FIT_SCALE_RANGE + 1),ZOOM_SF_TOP*bZoomVRatio/(SCREEN_FIT_SCALE_RANGE + 1));
    FillRect(hdc,&rect,hbrush);
    InflateRect(&rect,-ZOOM_SF_LEFT*bZoomHRatio/(SCREEN_FIT_SCALE_RANGE + 1),-ZOOM_SF_TOP*bZoomVRatio/(SCREEN_FIT_SCALE_RANGE + 1));
    //----------------

    br.leftEdgeColor = 30;
    br.rightEdgeColor = 30;
    DrawBREdge(hdc,&br);
    InflateRect(&rect,-4,-4);
    SetTextColor(hdc, GetColorInDef256Palette(30));
    DrawText(hdc,strLeftArrow,-1,&rect,DT_LEFT | DT_VCENTER | DT_SINGLELINE);
    DrawText(hdc,strUpArrow,-1,&rect,DT_CENTER| DT_TOP| DT_SINGLELINE);
    DrawText(hdc,strRightArrow,-1,&rect,DT_RIGHT| DT_VCENTER | DT_SINGLELINE);
    DrawText(hdc,strDownArrow,-1,&rect,DT_CENTER| DT_BOTTOM| DT_SINGLELINE);

    DeleteObject((HGDIOBJ)hbrush);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -