本文整理汇总了C++中BSP_LCD_DrawPixel函数的典型用法代码示例。如果您正苦于以下问题:C++ BSP_LCD_DrawPixel函数的具体用法?C++ BSP_LCD_DrawPixel怎么用?C++ BSP_LCD_DrawPixel使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了BSP_LCD_DrawPixel函数的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BSP_LCD_DrawEllipse
/**
* @brief Draws an ellipse on LCD.
* @param Xpos: X position
* @param Ypos: Y position
* @param XRadius: Ellipse X radius
* @param YRadius: Ellipse Y radius
* @retval None
*/
void BSP_LCD_DrawEllipse(int Xpos, int Ypos, int XRadius, int YRadius)
{
int x = 0, y = -YRadius, err = 2-2*XRadius, e2;
float K = 0, rad1 = 0, rad2 = 0;
rad1 = XRadius;
rad2 = YRadius;
K = (float)(rad2/rad1);
do {
BSP_LCD_DrawPixel((Xpos-(uint16_t)(x/K)), (Ypos+y), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos+(uint16_t)(x/K)), (Ypos+y), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos+(uint16_t)(x/K)), (Ypos-y), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos-(uint16_t)(x/K)), (Ypos-y), DrawProp.TextColor);
e2 = err;
if (e2 <= x) {
err += ++x*2+1;
if (-y == x && e2 <= y) e2 = 0;
}
if (e2 > y) err += ++y*2+1;
}
while (y <= 0);
}
示例2: BSP_LCD_DrawCircle
/**
* @brief Displays a circle.
* @param Xpos: the X position
* @param Ypos: the Y position
* @param Radius: the circle radius
*/
void BSP_LCD_DrawCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius)
{
int32_t d;/* Decision Variable */
uint32_t curx;/* Current X Value */
uint32_t cury;/* Current Y Value */
d = 3 - (Radius << 1);
curx = 0;
cury = Radius;
while (curx <= cury)
{
BSP_LCD_DrawPixel((Xpos + curx), (Ypos - cury), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos - curx), (Ypos - cury), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos + cury), (Ypos - curx), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos - cury), (Ypos - curx), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos + curx), (Ypos + cury), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos - curx), (Ypos + cury), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos + cury), (Ypos + curx), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos - cury), (Ypos + curx), DrawProp[ActiveLayer].TextColor);
if (d < 0)
{
d += (curx << 2) + 6;
}
else
{
d += ((curx - cury) << 2) + 10;
cury--;
}
curx++;
}
}
示例3: DrawChar
/**
* @brief Draws a character on LCD.
* @param Xpos: Line where to display the character shape
* @param Ypos: Start column address
* @param c: Pointer to the character data
* @retval None
*/
static void DrawChar(uint16_t Xpos, uint16_t Ypos, const uint8_t *c)
{
uint32_t i = 0, j = 0;
uint16_t height, width;
uint8_t offset;
uint8_t *pchar;
uint32_t line;
height = DrawProp[ActiveLayer].pFont->Height;
width = DrawProp[ActiveLayer].pFont->Width;
offset = 8 *((width + 7)/8) - width ;
for(i = 0; i < height; i++)
{
pchar = ((uint8_t *)c + (width + 7)/8 * i);
switch(((width + 7)/8))
{
case 1:
line = pchar[0];
break;
case 2:
line = (pchar[0]<< 8) | pchar[1];
break;
case 3:
default:
line = (pchar[0]<< 16) | (pchar[1]<< 8) | pchar[2];
break;
}
for (j = 0; j < width; j++)
{
if(line & (1 << (width- j + offset- 1)))
{
BSP_LCD_DrawPixel((Xpos + j), Ypos, DrawProp[ActiveLayer].TextColor);
}
else
{
BSP_LCD_DrawPixel((Xpos + j), Ypos, DrawProp[ActiveLayer].BackColor);
}
}
Ypos++;
}
}
示例4: display_samples
void display_samples(uint32_t *samples) {
uint32_t trigger_point = find_trigger_point(samples); //to synchronize
BSP_LCD_Clear(LCD_COLOR_BLACK);
for(uint32_t i = trigger_point+2; i < SIZE; i += 2) {
BSP_LCD_DrawPixel(scale(samples[i]),i-trigger_point,LCD_COLOR_WHITE);
}
}
示例5: BSP_LCD_DrawVLine
/**
* @brief Draws a vertical line.
* @param Xpos: X position
* @param Ypos: Y position
* @param Length: Line length
* @retval None
*/
void BSP_LCD_DrawVLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length)
{
uint32_t index = 0;
if(lcd_drv->DrawVLine != NULL)
{
lcd_drv->DrawVLine(DrawProp.TextColor, Xpos, Ypos, Length);
}
else
{
for(index = 0; index < Length; index++)
{
BSP_LCD_DrawPixel(Xpos, Ypos + index, DrawProp.TextColor);
}
}
}
示例6: BSP_LCD_DrawCircle
/**
* @brief Draws a circle.
* @param Xpos: X position
* @param Ypos: Y position
* @param Radius: Circle radius
* @retval None
*/
void BSP_LCD_DrawCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius)
{
int32_t D; /* Decision Variable */
uint32_t CurX; /* Current X Value */
uint32_t CurY; /* Current Y Value */
D = 3 - (Radius << 1);
CurX = 0;
CurY = Radius;
while (CurX <= CurY)
{
BSP_LCD_DrawPixel((Xpos + CurX), (Ypos - CurY), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos - CurX), (Ypos - CurY), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos + CurY), (Ypos - CurX), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos - CurY), (Ypos - CurX), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos + CurX), (Ypos + CurY), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos - CurX), (Ypos + CurY), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos + CurY), (Ypos + CurX), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos - CurY), (Ypos + CurX), DrawProp.TextColor);
/* Initialize the font */
BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
if (D < 0)
{
D += (CurX << 2) + 6;
}
else
{
D += ((CurX - CurY) << 2) + 10;
CurY--;
}
CurX++;
}
}
示例7: BSP_LCD_DrawCircle
/**
* @brief Draws a circle.
* @param Xpos: X position
* @param Ypos: Y position
* @param Radius: Circle radius
* @retval None
*/
void BSP_LCD_DrawCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius)
{
int32_t decision; /* Decision Variable */
uint32_t current_x; /* Current X Value */
uint32_t current_y; /* Current Y Value */
decision = 3 - (Radius << 1);
current_x = 0;
current_y = Radius;
while (current_x <= current_y)
{
BSP_LCD_DrawPixel((Xpos + current_x), (Ypos - current_y), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos - current_x), (Ypos - current_y), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos + current_y), (Ypos - current_x), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos - current_y), (Ypos - current_x), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos + current_x), (Ypos + current_y), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos - current_x), (Ypos + current_y), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos + current_y), (Ypos + current_x), DrawProp.TextColor);
BSP_LCD_DrawPixel((Xpos - current_y), (Ypos + current_x), DrawProp.TextColor);
/* Initialize the font */
BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
if (decision < 0)
{
decision += (current_x << 2) + 6;
}
else
{
decision += ((current_x - current_y) << 2) + 10;
current_y--;
}
current_x++;
}
}
示例8: BSP_LCD_DrawCircle
/**
* @brief Draws a circle.
* @param Xpos: X position
* @param Ypos: Y position
* @param Radius: Circle radius
* @retval None
*/
void BSP_LCD_DrawCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius)
{
int32_t D; /* Decision Variable */
uint32_t CurX; /* Current X Value */
uint32_t CurY; /* Current Y Value */
D = 3 - (Radius << 1);
CurX = 0;
CurY = Radius;
while (CurX <= CurY)
{
BSP_LCD_DrawPixel((Xpos + CurX), (Ypos - CurY), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos - CurX), (Ypos - CurY), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos + CurY), (Ypos - CurX), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos - CurY), (Ypos - CurX), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos + CurX), (Ypos + CurY), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos - CurX), (Ypos + CurY), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos + CurY), (Ypos + CurX), DrawProp[ActiveLayer].TextColor);
BSP_LCD_DrawPixel((Xpos - CurY), (Ypos + CurX), DrawProp[ActiveLayer].TextColor);
if (D < 0)
{
D += (CurX << 2) + 6;
}
else
{
D += ((CurX - CurY) << 2) + 10;
CurY--;
}
CurX++;
}
}
示例9: kStorage_OpenFileDrawPixel
/**
* @brief Open a file and draw each pixel of the corresponding file
* @param xpos: x position for the image
* @param xpos: y position for the image
* @param BmpName : file name
* @retval err: Error status (0=> success, 1=> fail)
*/
STORAGE_RETURN kStorage_OpenFileDrawPixel(uint16_t xpos, uint16_t ypos, uint8_t *BmpName)
{
uint32_t index, size, width, height;
#if 0
uint32_t x;
uint16_t color;
#endif
uint32_t bmpaddress, bit_pixel;
unsigned int BytesRead;
FIL file1;
uint8_t *kstorage_tmpbuffer = NULL;
if(f_open(&file1, (char *)BmpName, FA_READ) != FR_OK)
{
return KSTORAGE_ERROR_OPEN;
}
/* Memory allocation for the BMP header */
kstorage_tmpbuffer = malloc(sizeof(uint8_t)*30);
if(kstorage_tmpbuffer==NULL)
{
f_close(&file1);
return KSTORAGE_ERROR_MALLOC;
}
/* Read BMP header */
if(f_read(&file1, (char *)kstorage_tmpbuffer, 30, &BytesRead) != FR_OK)
{
free(kstorage_tmpbuffer);
f_close(&file1);
return KSTORAGE_ERROR_READ;
}
/* get the bmpadress */
bmpaddress = (uint32_t)kstorage_tmpbuffer;
/* Read bitmap size */
size = *(uint16_t *) (bmpaddress + 2);
size |= (*(uint16_t *) (bmpaddress + 4)) << 16;
/* Get bitmap data address offset */
index = *(uint16_t *) (bmpaddress + 10);
index |= (*(uint16_t *) (bmpaddress + 12)) << 16;
/* Read bitmap width */
width = *(uint16_t *) (bmpaddress + 18);
width |= (*(uint16_t *) (bmpaddress + 20)) << 16;
/* Read bitmap height */
height = *(uint16_t *) (bmpaddress + 22);
height |= (*(uint16_t *) (bmpaddress + 24)) << 16;
/* Read bit/pixel */
bit_pixel = (*(uint16_t *) (bmpaddress + 28)) / 8;
// bit_pixel = bit_pixel/8;
size = (size - index);
xpos = xpos + height - 1;
/* Synchronize f_read right in front of the image data */
f_close (&file1);
/* Memory allocation for the BMP data line */
free(kstorage_tmpbuffer);
kstorage_tmpbuffer = malloc(sizeof(uint8_t)*width*bit_pixel);
if(kstorage_tmpbuffer==NULL)
{
return KSTORAGE_ERROR_OPEN;
}
f_open (&file1, (TCHAR const*)BmpName, FA_READ);
f_read(&file1, kstorage_tmpbuffer, index, &BytesRead);
do {
/* read a line */
f_read(&file1, kstorage_tmpbuffer, width*bit_pixel, &BytesRead);
size -= width*bit_pixel;
#if 0
/* display each pixel of the line */
for (x = 0; x < width; x++)
{
color = (kstorage_tmpbuffer[ 2*x+1] << 8) | kstorage_tmpbuffer[ 2 * x];
BSP_LCD_DrawPixel(xpos, ypos + x, color);
}
#else
extern void hx8347d_SetCursor(uint16_t Xpos, uint16_t Ypos);
//void LCD_IO_WriteMultipleData(uint8_t *pData, uint32_t Size);
//void LCD_IO_WriteReg(uint8_t Reg);
// hx8347d_WriteReg(LCD_REG_22, 0xA0);
/* Set Cursor */
hx8347d_SetCursor(xpos, ypos);
//.........这里部分代码省略.........
示例10: BSP_LCD_DrawLine
/**
* @brief Draws an uni-line (between two points).
* @param x1: Point 1 X position
* @param y1: Point 1 Y position
* @param x2: Point 2 X position
* @param y2: Point 2 Y position
* @retval None
*/
void BSP_LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
{
int16_t deltax = 0, deltay = 0, x = 0, y = 0, xinc1 = 0, xinc2 = 0,
yinc1 = 0, yinc2 = 0, den = 0, num = 0, numadd = 0, numpixels = 0,
curpixel = 0;
deltax = ABS(x2 - x1); /* The difference between the x's */
deltay = ABS(y2 - y1); /* The difference between the y's */
x = x1; /* Start x off at the first pixel */
y = y1; /* Start y off at the first pixel */
if (x2 >= x1) /* The x-values are increasing */
{
xinc1 = 1;
xinc2 = 1;
}
else /* The x-values are decreasing */
{
xinc1 = -1;
xinc2 = -1;
}
if (y2 >= y1) /* The y-values are increasing */
{
yinc1 = 1;
yinc2 = 1;
}
else /* The y-values are decreasing */
{
yinc1 = -1;
yinc2 = -1;
}
if (deltax >= deltay) /* There is at least one x-value for every y-value */
{
xinc1 = 0; /* Don't change the x when numerator >= denominator */
yinc2 = 0; /* Don't change the y for every iteration */
den = deltax;
num = deltax / 2;
numadd = deltay;
numpixels = deltax; /* There are more x-values than y-values */
}
else /* There is at least one y-value for every x-value */
{
xinc2 = 0; /* Don't change the x for every iteration */
yinc1 = 0; /* Don't change the y when numerator >= denominator */
den = deltay;
num = deltay / 2;
numadd = deltax;
numpixels = deltay; /* There are more y-values than x-values */
}
for (curpixel = 0; curpixel <= numpixels; curpixel++)
{
BSP_LCD_DrawPixel(x, y, DrawProp.TextColor); /* Draw the current pixel */
num += numadd; /* Increase the numerator by the top of the fraction */
if (num >= den) /* Check if numerator >= denominator */
{
num -= den; /* Calculate the new numerator value */
x += xinc1; /* Change the x as appropriate */
y += yinc1; /* Change the y as appropriate */
}
x += xinc2; /* Change the x as appropriate */
y += yinc2; /* Change the y as appropriate */
}
}
示例11: Storage_OpenReadFile
/**
* @brief Open a file and copy its content to a buffer
* @param Xpoz: X position
* @param Ypoz: Y position
* @param BmpName: A pointer to the Bmp file name
* @retval err: Error status (0=> success, 1=> fail)
*/
uint32_t Storage_OpenReadFile(uint8_t Xpoz, uint16_t Ypoz, const char *BmpName)
{
uint32_t index = 0, size = 0, width = 0, height = 0, i1 = 0, x = 0, y = 159;
uint32_t bmpaddress, bit_pixel = 0;
FIL file1;
uint16_t color = 0;
f_open(&file1, BmpName, FA_READ);
f_read(&file1, aBuffer, 30, &BytesRead);
bmpaddress = (uint32_t)aBuffer;
/* Read bitmap size */
size = *(uint16_t *) (bmpaddress + 2);
size |= (*(uint16_t *) (bmpaddress + 4)) << 16;
/* Get bitmap data address offset */
index = *(uint16_t *) (bmpaddress + 10);
index |= (*(uint16_t *) (bmpaddress + 12)) << 16;
/* Read bitmap width */
width = *(uint16_t *) (bmpaddress + 18);
width |= (*(uint16_t *) (bmpaddress + 20)) << 16;
/* Read bitmap height */
height = *(uint16_t *) (bmpaddress + 22);
height |= (*(uint16_t *) (bmpaddress + 24)) << 16;
/* Read bit/pixel */
bit_pixel = *(uint16_t *) (bmpaddress + 28);
bit_pixel = bit_pixel/8;
size = (size - index);
/* Synchronize f_read right in front of the image data */
f_close (&file1);
f_open (&file1, (TCHAR const*)BmpName, FA_READ);
f_read(&file1, aBuffer, index, &BytesRead);
do
{
if(size < 512)
{
i1 = size;
}
else
{
i1 = 512;
}
size -= i1;
f_read(&file1, aBuffer, i1, (UINT *)&BytesRead);
for (index = 0; index < (i1/bit_pixel); index++)
{
if( index%bit_pixel == 0)
{
color = (aBuffer[ index + 1] << 8) | aBuffer[ index];
}
x = index/bit_pixel;
BSP_LCD_DrawPixel(x, y, color);
}
y--;
for (index = (i1/bit_pixel); index < i1; index++)
{
if( index%bit_pixel == 0)
{
color = (aBuffer[ index + 1] << 8) | aBuffer[ index];
}
x = index/bit_pixel - width;
BSP_LCD_DrawPixel(x, y, color);
}
y--;
}
while (size > 0);
f_close(&file1);
return 1;
}
示例12: BSP_LCD_DrawPixel
void LCD_DISCO_F469NI::DrawPixel(uint16_t Xpos, uint16_t Ypos, uint32_t RGB_Code)
{
BSP_LCD_DrawPixel(Xpos, Ypos, RGB_Code);
}