Delphi ::: Dicas & Truques ::: Imagens e Processamento de Imagens |
Como capturar um screenshot da área de trabalho e salvá-lo como um Bitmap usando DelphiQuantidade de visualizações: 13973 vezes |
|
Em algumas situações precisamos capturar um screenshot da área de trabalho (Windows Desktop) e salvá-lo como um Bitmap. Esta dica mostra como isso pode ser feito. Note que aqui estamos salvando o bitmap gerado no mesmo diretório do executável. Caso queira salvar o resultado em outra pasta ou diretório, consulte minhas dicas sobre a manipulação de arquivos e diretórios usando Delphi. Veja o código (coloquei no evento OnClick de um botão:
procedure TForm2.Button1Click(Sender: TObject);
var
DCDesk: HDC;
bmp: TBitmap;
begin
// vamos criar o Bitmap
bmp := TBitmap.Create;
// vamos definir o tamanho do bitmap
bmp.Height := Screen.Height;
bmp.Width := Screen.Width;
// aqui nós obtemos um handle para o contexto de dispositivo
// de exibição do Desktop
DCDesk := GetWindowDC(GetDesktopWindow);
// vamos copiar a imagem do desktop para o bitmap criado
// anteriormente
BitBlt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,
DCDesk, 0, 0, SRCCOPY);
// salvamos o bitmap
bmp.SaveToFile('screenshot.bmp');
// liberamos o handle do desktop
ReleaseDC(GetDesktopWindow, DCDesk);
// e finalmente liberamos o bitmap
bmp.Free;
ShowMessage('Screenshot criado com sucesso.');
end;
Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
C ::: Dicas & Truques ::: Struct (Estruturas, Registros) |
Como escrever um função que retorna uma estrutura (struct) usando a linguagem CQuantidade de visualizações: 16496 vezes |
|
Muitas vezes precisamos escrever funções que retornam estruturas, ou melhor, que alocam e retornam ponteiros para estruturas. Esta não é, definitivamente, uma tarefa para iniciantes em C. Contudo, esta dica lhe fornecerá um código completo indicando-lhe uma das formas mais simples de conseguir tal proeza. Antes de executar o código, porém, dê uma olhada atenta na função obter_livro(). Veja que esta função recebe o título, o código e o número de páginas de um livro. Em seguida a função aloca memória para uma estrutura, preenche seus membros e retorna um ponteiro para tal estrutura. Eis a listagem completa:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// define a estrutura Livro
struct Livro{
char *titulo;
int codigo;
int paginas;
};
// função que aloca e retorna um ponteiro para uma
// estrutura Livro
struct Livro* obter_livro(char *titulo, int codigo, int paginas){
// aloca memória para uma estrutura Livro
struct Livro *temp = (struct Livro*)malloc(sizeof(struct Livro));
// preeche os membros da estrutura
temp->titulo = titulo;
temp->codigo = codigo;
temp->paginas = paginas;
return temp;
}
int main(int argc, char *argv[]){
// obtém uma instância da estrutura Livro
struct Livro *a = obter_livro("Programando em Java", 345, 120);
// verifica se a estrutura foi retornada com
// sucesso
if(a != NULL){
printf("Titulo: %s\nCodigo: %d\nPaginas: %d\n",
a->titulo, a->codigo, a->paginas);
}
// obtém uma segunda instância da estrutura Livro
struct Livro *b = obter_livro("JavaScript - Guia", 540, 800);
// verifica se a estrutura foi retornada com
// sucesso
if(b != NULL){
printf("Titulo: %s\nCodigo: %d\nPaginas: %d\n",
b->titulo, b->codigo, b->paginas);
}
puts("\n\n");
system("PAUSE");
return 0;
}
Ao executar este código nós teremos o seguinte resultado: Titulo: Programando em Java Codigo: 345 Paginas: 120 Titulo: JavaScript - Guia Codigo: 540 Paginas: 800 Pressione qualquer tecla para continuar... |
C++ Builder ::: VCL - Visual Component Library ::: TEdit |
Como habilitar ou desabilitar um TEdit usando a função EnableWindow() da API do Windows usando C++ BuilderQuantidade de visualizações: 6414 vezes |
|
Embora o C++ Builder já nos forneça as ferramentas necessárias para habilitar ou desabilitar um TEdit em tempo de execução, é importante saber como realizar esta tarefa usando a API do Windows. Para isso, podemos usar a função EnableWindow() com os valores true ou false. A função EnableWindow() possui a seguinte assinatura: BOOL EnableWindow( HWND hWnd, BOOL bEnable ); Note que precisamos informar o HWND (parâmetro hWnd) para a caixa de texto e um valor BOOL. Se fornecermos false, a caixa de texto será desabilitada. Veja:
void __fastcall TForm3::Button2Click(TObject *Sender)
{
// vamos desabilitar o TEdit usando a função EnableWindow()
// com o valor false
if(EnableWindow(Edit1->Handle, false)){
ShowMessage("A caixa de texto foi desabilitada com sucesso.");
}
}
Para habilitar a caixa de texto novamente, só precisamos fornecer o valor true para o parâmetro bEnable:
void __fastcall TForm3::Button2Click(TObject *Sender)
{
// vamos habilitar o TEdit usando a função EnableWindow()
// com o valor true
if(EnableWindow(Edit1->Handle, true)){
ShowMessage("A caixa de texto foi habilitada com sucesso.");
}
}
É importante observar que o retorno da função EnableWindow será FALSE se tentarmos habilitar uma caixa de texto que já está habilitada ou tentarmos desabilitar uma caixa de texto que já está desabilitada. |
Rust ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como retornar o tamanho de um array em Rust usando a função len()Quantidade de visualizações: 882 vezes |
|
Em várias situações nós precisamos obter e retornar a quantidade de elementos em um vetor Rust, ou seja, um array. Para isso nós podemos usar a função len() do objeto Array. Veja um exemplo Rust no qual nós criamos um array com cinco elementos do tipo inteiro e em seguida usando a função len() para retornar o seu tamanho:
// função principal do programa Rust
fn main() {
// vamos criar um array com 5 elementos
let valores = [7, 3, 4, 9, 1];
// agora vamos obter o tamanho do array
let tamanho = valores.len();
// e mostramos o resultado
println!("O array possui {} elementos", tamanho);
}
Ao executar este código Rust nós teremos o seguinte resultado: O array possui 5 elementos |
Nossas 20 dicas & truques de programação mais populares |
|
Delphi - Como obter o número do registro atual em um TClientDataSet do Delphi usando a propriedade RecNo Java - Como transformar um StringBuffer em uma String usando o método toString() da classe StringBuffer |
Você também poderá gostar das dicas e truques de programação abaixo |
|
PHP - Como obter o caminho da raiz do site usando a variável global $_SERVER['DOCUMENT_ROOT'] do PHP JavaScript - Como testar se uma string começa com uma determinada substring em JavaScript usando a função startsWith() AutoCAD Civil 3D - Como criar pontos COGO no AutoCAD Civil 3D |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





