Ⅰ c語言滾動字幕代碼
在軟體啟動時,為了加深軟體在用戶頭腦中的印象,可以在軟體封面上由下而上循環滾動顯示一些包含軟體名稱、功能、版本、用戶名、研製單位等文字信息,在用戶按下任意鍵或點擊滑鼠鍵後,立即結束演示進入程序主界面。本文通過向工程中添加Splash screen組件,然後在CsplashWnd類中添加DrawText成員方便地實現了具有滾動文字效果的軟體封面,其中文字的位置、對齊方式、字體、字型大小、顏色都由程序來控制。
---- 詳細設計步驟如下:
---- 1.創建一個名為test的SDI或MDI工程;
---- 2.向工程中添加Splash screen組件,即添加一個CWnd類的派生類CsplashWnd;
---- 3.編輯或導入軟體封面的點陣圖資源,標識號為IDB_SPLASH;
---- 4.向CsplashWnd類中添加一個公有成員函數DrawText,此函數用來在軟體封面中顯示文字,的實現代碼如下:(其中參數含義分別為:內存dc,文字位置,對齊方式,字體,字型大小,顏色,正文文字)
void CSplashWnd::DrawText(CDC *pDC,
int x, int y, int nAlign,
CString sFontName, int nFONTSIZE0,
COLORREF crTextColor, CString sText)
{
LOGFONT lf;//字體
lf.lfStrikeOut=0;//刪除線
lf.lfCharSet = DEFAULT_CHARSET ;//字元集
lf.lfEscapement =0;//角度
lf.lfItalic = 0 ;//傾斜
lf.lfUnderline = 0 ;//下劃線
lf.lfHeight = nFONTSIZE0 ;//字型大小
strcpy(lf.lfFaceName,sFaceName.
GetBuffer(sFontName.GetLength()));
CFont font ;
font.CreateFontIndirect(&lf);
CFont *pOldFont = (CFont *)
pDC->SelectObject(&font);
UINT oldAlign,uAlign ;
switch(nAlign)
{
case 0: uAlign = TA_LEFT | TA_TOP ; break;
case 1: uAlign = TA_CENTER | TA_TOP; break;
case 2: uAlign = TA_RIGHT | TA_TOP ; break;
default: uAlign = TA_LEFT | TA_TOP ; break;
}
oldAlign = pDC->SetTextAlign(uAlign);
int oldMode = pDC->SetBkMode(TRANSPARENT);
int oldColor = pDC->SetTextColor(crTextColor) ;
pDC->TextOut(x,y,sText);
pDC->SetTextColor(oldColor) ;
pDC->SetTextAlign(oldAlign);
pDC->SetBkMode(oldMode);
pDC->SelectObject(pOldFont);
font.DeleteObject();
}
---- 5. 給CsplashWnd類中添加如下公有成員變數,並初始化變數;
class CSplashWnd : public CWnd
{
......
public:
CDC m_dcText,m_dcImage;//顯示dc的兼容內存dc
CBitmap* m_pBitmap;//點陣圖對象
CBitmap* m_pOldBitmapText,
*m_pOldBitmap;//跟蹤內存dc中的原點陣圖
CRgn m_rgn;//用於生成矩形區域
CRect m_TextRect ;//顯示文字的矩形區域
int m_nCurPos ;//文字當前位置
......
}
CSplashWnd::CSplashWnd()
{......
m_nCurPos = 50 ;
......
}
---- 6.在SPLASH.CPP中加入以下預定義命令:
#define TITLECOLOR RGB(0,0,255)//默認標題顏色
#define CONTENTCOLOR RGB(0,255,255)//默認說明文字顏色
#define FONTSIZE0 15 //默認字型大小
---- 7. 在CsplashWnd類Create中拷貝矩形區域到m_TextRect ;
BOOL CSplashWnd::Create
(CWnd* pParentWnd /*= NULL*/)
{......
m_TextRect.CopyRect
(&CRect(50,100,500,300));
......
}
---- 8. 在CsplashWnd類的成員OnPaint中添加代碼,響應顯示窗口時發送的WM_PAINT消息。
void CSplashWnd::OnPaint()
{
CPaintDC dc(this);
BITMAP bm;
m_bitmap.GetBitmap(&bm);
static BOOL bFirst = TRUE;//
指示是否第一次繪制窗口
if(bFirst)
{
if (!m_dcImage.CreateCompatibleDC(&dc)) return;
m_pOldBitmap = m_dcImage.SelectObject(&m_bitmap);
if (!m_dcText.CreateCompatibleDC(&dc)) return;
m_pBitmap = new CBitmap ;
int nBitCount = m_dcText.GetDeviceCaps(BITSPIXEL);
m_pBitmap->CreateBitmap
(bm.bmWidth,bm.bmHeight,1,nBitCount,NULL);
m_pOldBitmapText = m_dcText.SelectObject(m_pBitmap);
m_rgn.CreateRectRgn(m_TextRect.left,m_TextRect.top,
m_TextRect.right,m_TextRect.bottom);
bFirst = FALSE;
}
m_dcText.SelectClipRgn(NULL);
m_dcText.BitBlt(0, 0, bm.bmWidth,
bm.bmHeight,&m_dcImage, 0, 0, SRCCOPY);
m_dcText.SelectClipRgn(&m_rgn);
int nBasex = m_TextRect.left ;
int nBasey = m_TextRect.bottom-m_nCurPos;
int nMidx = m_TextRect.left + m_TextRect.Width()/2 ;
DrawText(&m_dcText,nMidx,nBasey, 1,
"楷體_GB2312", FONTSIZE0+5,TITLECOLOR,"研製單位");
DrawText(&m_dcText,nMidx,nBasey+30, 1,
"楷體_GB2312", FONTSIZE0,CONTENTCOLOR,
"武警指揮學院模擬中心");
DrawText(&m_dcText,nMidx,nBasey+50, 1,
"楷體_GB2312", FONTSIZE0,TITLECOLOR,"郵政編碼");
DrawText(&m_dcText,nMidx,nBasey+70, 1,
"楷體_GB2312", FONTSIZE0,CONTENTCOLOR,"300350");
dc.BitBlt(0, 0, bm.bmWidth,
bm.bmHeight,&m_dcText, 0,0, SRCCOPY);
}
Ⅱ c語言怎麼輸出有顏色的字,求大神,看別人代碼,是輸出黃的,求告訴其他的…
#include <stdio.h>
#include <conio.h> /* 使用getch()函數,這個函數用於無緩沖輸入,不回顯。即:按下一個鍵立即讀入該字元(不需要按回車鍵),並且不自動把讀入的字元顯示在屏幕上 */
/* 列印指定寬度的顏色條 */
/* 參數1:顏色 */
/* 參數2:寬度 */
void prt_color_bar(unsigned color, unsigned width)
{
unsigned i;
/* 指定寬度個數的空格 */
for (i = 0; i < width; i++)
{
printf("\033[%u;%um \033[0m", color, color-10);
/* 同顏色,文字色的數值比背景色的代碼少10 */
}
}
Ⅲ C語言,怎麼使打出的代碼是彩色的
1、可以調用dos控制台的命令system("color xx");改變文字顏色。設置默認的控制台文字和背景顏色。COLOR [attr]attr 指定控制台輸出的顏色屬性顏色屬性由兩個十六進制數字指定 -- 第一個為背景,第二個則為文字。每個數字可以為以下任何值之一:0 = 黑色 8 = 灰色1 = 藍色 9 = 淡藍色2 = 綠色 A = 淡綠色3 = 淺綠色 B = 淡淺綠色4 = 紅色 C = 淡紅色5 = 紫色 D = 淡紫色6 = 黃色 E = 淡黃色7 = 白色 F = 亮白色如果沒有給定任何參數,該命令會將顏色還原到 CMD.EXE 啟動時的顏色
Ⅳ C語言動畫程序代碼
只有動畫沒有色彩的設置要不要?
Ⅳ C語言改變字體顏色的代碼
1,用樣式表(css),在組件裡面加上style屬性,例如:
<div style="background-color:blue;font-family:宋體;">
歡迎你
</div>
2,直接在字體兩邊加font標記,例如:
<font color=blue >歡迎你</font>
(5)彩色動態字母c語言代碼擴展閱讀
<input name="submit" type="submit" value="changeColor" onClick="changeColor()">
<span id="wenzi">wenzi</span>
<script>
function changeColor(){
document.all['wenzi'].style.color="#ff0000";
}
</script>
Ⅵ 滾動字幕c語言編程求一個16*16的LED點陣屏滾動字幕的C語言程序
這算是單片機上應用吧。
先要看LED點陣屏所需參數(驅動,速度,點陣顯示漢字串口),這個看懂了也就會了。當然先要會C語言
要是不會,直接用那就找差不多的改。
http://blog.163.com/heaphone2010@126/blog/static/1684254352010112693739548/
這里有一個16*128的。
Ⅶ 如何用C語言製作一個可以在開始屏幕上滾動的字幕
實現滾動字幕:
一、單行滾動,寫一個函數,每次調用讓全局或靜態字元數組向一個方向移位(比如左移,從最右邊一個非0字元開始遍歷,依次覆蓋左邊的一個字元,最左邊的字元被第二個字元覆蓋,最右邊一個非0位變移出的那個字元)。記得保留結束符號0。
二、之後循環列印字元數組。每次使用system("cls");清空控制台顯示。
三、多行滾動,同理,只不過把字元移動覆蓋,改成字元串移動覆蓋。(移動方向的後一行覆蓋前一行,把移動方向第一行內容賦值給最後一行)。
//ps:由於肉眼觀察,移動需要間隔,用Sleep函數,但該函數會讓線程停止,如滾屏間隔期間,還希望其它部分正常運行,需要寫線程。
下面是參考代碼:
#include<stdio.h>
#include <windows.h>
void sScreen(char str[],int len,int f);//len:內容長度,不包含結束符號。f=1向左移動。f=0向右移動;
int main()
{
char str[]="I LOVE YOU";
while(1)
{
printf("%s ",str);
sScreen(str,10,0);
Sleep(1000);
system("cls");
}
return 0;
}
void sScreen(char str[],int len,int f)
{
int i;
char c;
if(f)
{
c=str[0];
for(i=0;i<len-1;i++)
str[i]=str[i+1];
str[len-1]=c;
}
if(!f)
{
c=str[len-1];
for(i=len-1;i>0;i--)
str[i]=str[i-1];
str[0]=c;
}
}
Ⅷ 用c語言編寫一個字幕滾動程序
以下代碼實現字元從右到左循環滾動.
C語言控制台程序
#include<stdio.h>
#include<string.h>
#include<windows.h>
intmain()
{
charstr[100]="HELLOWORLD!GOODBYE!";
inti,j;
for(i=0;i<strlen(str);i++)
{
system("cls");
for(j=i;j<strlen(str);j++)
{
printf("%c",str[j]);
}
Sleep(100);
printf(" ");
}
return0;
}
Ⅸ 急需led滾動字幕代碼,用到8*8LED列陣
#include<reg51.h>
#defineucharunsignedchar
voiddelay(uchartime)
{uchari;
while(time--)
for(i=0;i<125;i++);
}
voidmain()
{
ucharA[8]={0x18,0x3c,0x66,0x66,0x7e,0x66,0x66,0x66};//A
ucharB[8]={0x7c,0x6e,0x66,0x7c,0x66,0x66,0x6e,0x7c};//B
ucharC[8]={0x1e,0x3e,0x60,0x60,0x60,0x70,0x3e,0x1e};//C
ucharsit[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar*tt[3]={A,B,C};
uchari=0,j=0;
unsignedinta=1000;
for(j=0;j<3;j++)
{a=100;
while(a--)
for(i=0;i<8;i++)
{
P2=*(tt[j]+i);
P0=~sit[i];
delay(1);
P2=0;//clean-up
}
}
delay(100);
}
Ⅹ C語言單片機代碼 數碼管動態顯示
這里的16個元素代表的是從十六進制數0~9、A、B、C、D、E、F的段碼,根據什麼來填這些數組元素?那就要看你設計程序時定義數組的作用才能確定.table[1]對應的元素為0x06,是十六進制數,轉換成二進制數是00000110B,分別對應於數碼管的Dp、g、f、e、d、c、b、a
腳,所以在共陰數碼管上點亮b、c兩段,顯示的是數字1,其它同理。