Un valido strumento online gratuito ed in lingua italiana, per la modifica e gestione dei file pdf.
Parliamo del sito https://toolhub.club/it/pdf che non richiede ne indirizzo email e ne account, nella gestione dei file pdf.
Programmazione .Net, Asp.Net, Compact Framework, MAUI, Sql Server, Filenet e tanto altro materiale informatico.
Un valido strumento online gratuito ed in lingua italiana, per la modifica e gestione dei file pdf.
Parliamo del sito https://toolhub.club/it/pdf che non richiede ne indirizzo email e ne account, nella gestione dei file pdf.
Un valido strumento online per la gestione delle immagini, in particolare per applicare effetti o modifiche a delle immagini.
Il sito ToolHub, visibile qui https://toolhub.club/it/images tra le varie funzionalità, fornisce la possibilità di applicare effetti o modificare alle immagini. Il servizio in lingua italiana è gratuito e non richiede ne indirizzo email e ne registrazione.
Un gioco molto ben curato nella grafica ma soprattutto della sua giocabilità, parliamo del gioco di avventura Blue Protocol: Star Resonance, per sistemi operativi Windows .
Il gioco adatto a ragazzi ed adulti, è un video gioco molto ben fatto.
Per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/blue-protocol-star-resonance-27bff9
Disponibile gratuitamente e senza limitazioni, il gioco di azione ScourgeBirnger, in lingua italiana per sistemi operativi Windows e Mac.
Il gioco, per ragazzi ed adulti, offre una grafica molto interessante, ed una valida giocabilità.
Fino al 20 novembre 2025, sarà possibile scaricarlo gratuitamente, dopo tale data, il download sarà a pagamento.
Per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/scourgebringer
Un bellissimo gioco di avventura gratuito per tutti gli appassionativi del gaming.
Parliamo di Where Winds Meet, disponibile per sistemi operativi Windows, e senza limitazioni.
Il gioco, adatto a ragazzi ed adulti, offre una grafica molto ben curata e giocabilità molto ben fatta.
Per maggiori informazioni e download, visitate il seguente sito https://store.epicgames.com/it/p/where-winds-meet-58a176
Un bel gioco gratuito di avventura, quello disponibile gratuitamente per sistemi operativi Windows, adatto a bambini, ragazzi ed adulti.
Parliamo del video gioco ChronosWorlds, in lingua inglese, che offre una giocabilità molto ben fatta e grafica curata.
Per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/chronosworlds-b69248
Un gioco di strategia e guerra, molto ben fatto e con una valida giocabilità.
Fino al 20 novembre 2025, è possibile scaricare gratuitamente senza limitazioni, il gioco Songs Of Silence, in lingua italiana e per sistemi operativi Windows, dopo tale data, il gioco sarà a pagamento,.
Per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/songs-of-silence-778d86
Un gioco molto bello e con una grafica molto curata, parliamo del gioco di avventura Game Of Thrones Kingsroad, disponibile gratuitamente per sistemi operativi Windows.
Il gioco, per ragazzi ed adulti, offre una buona giocabilità.
Per maggiori informazioni e download, visitate il seguente sito https://store.epicgames.com/it/p/game-of-thrones-kingsroad-e19c7c
Disponibile gratuitamente e senza limitazioni il gioco di simulazione Oman Physics 12, per la gestione del voltaggio elettrico.
Il video gioco è per sistemi operativi Windows.
Per maggiori informazioni e download visitate il seguente sito https://store.epicgames.com/it/p/oman-physics-12-12f0d7
Un ottimo programma gratuito, in lingua italiana per la modifica e gestione dei file pdf.
Parliamo di FreePdf, scaricabile qui https://www.getfreepdf.com/it/ che permette di modificare e gestire i file pdf.
Un ottimo programma per modificare e creare file pdf.
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
public static void ResizeImage(string percorsoNomeFileOriginale, string percorsoNomeNuovoFile, int width, int height)
{
try
{
//Creo un nuovo oggetto bmp dall'immagine esistente
using (Bitmap bmpOriginale = new Bitmap(percorsoNomeFileOriginale))
{
//Crea un nuovo oggetto bitmap con le dimensioni desiderate
using (Bitmap bmpNuovaImmagine = new Bitmap(width, height))
{
//Crea un oggetto Graphics per disegnare sulla nuova bitmap
using (Graphics graphics = Graphics.FromImage(bmpNuovaImmagine))
{
//Imposta le proprietà per una migliore qualità (opzionale)
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
//Disegna l'immagine originale sulla nuova bitmap, ridimensionandola ed impostando le varie proprietà
graphics.DrawImage(bmpOriginale, 0, 0, width, height);
}
//Salva la nuova immagine
bmpNuovaImmagine.Save(percorsoNomeNuovoFile, ImageFormat.Jpeg);
}
}
MessageBox.Show("Immagine ridimensionata con successo!");
}
catch (System.Exception ex)
{
MessageBox.Show("Errore: " + ex.Message);
}
}
private void BtnRisoluzione_Click(object sender, EventArgs e)
{
// Imposta i percorsi e le dimensioni desiderate
string percorsoNomeFileOriginale = "C:\\varie\\menu.jpg";
string percorsoNomeNuovoFile = "C:\\varie\\menu19201080.jpg";
int newWidth = 1920;
int newHeight = 1080;
// Chiama la funzione per ridimensionare l'immagine
ResizeImage(percorsoNomeFileOriginale, percorsoNomeNuovoFile, newWidth, newHeight);
}
Un gioco molto ben fatto con una grafica molto ben curata nei vari dettagli.
Parliamo del gioco di simulatori dei treni MaSzyna, disponibile gratuitamente per sistemi operativi Windows .
Il video gioco è adatto a bambini, ragazzi ed adulti.
Per maggiori informazioni e download, visitate il seguente sito https://store.epicgames.com/it/p/maszyna-79052a
In questi giorni per chi utilizza il pacchetto Microsoft Office, avrà notato nuove icone per contraddistinguere i vari programmi della suite per l'ufficio.
Icone, molto carine.
In questo esempio di codice nel linguaggio di programmazione C#, tramite la versione 9 del framework .Net, vedremo come creare una nuova immagine, da una esistente, applicando l'effetto ondulato, il tutto come mostrato nella figura precedente.
In alto, sopra ad ogni dichiarazione, inseriamo l'aggiunta per il namespace per la grafica, ossia System.Drawing.
Di seguito si riporta il frammento di codice delle suddette operazioni.
C#
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
Nell'evento click di un pulsante in un progetto di tipo Windows Application, applicheremo tale effetto ad un'immagine esistente, dopo aver creato un oggetto con la stessa immagine.
Di seguito si riporta il codice per la gestione delle immagine, con alcuni commenti che illustrano i vari passaggi.
C#
private void BtnEffettoVortice_Click(object sender, EventArgs e)
{
try
{
string percorsoNomeFileOriginale = "C:\\varie\\uccelli.jpg";
string percorsoNomeNuovoFile = "C:\\varie\\uccelliEffettoVortice.jpg";
Bitmap originalImage = new Bitmap(percorsoNomeFileOriginale);
Bitmap vortexImage = new Bitmap(originalImage.Width, originalImage.Height);
int centerX = originalImage.Width / 2;
int centerY = originalImage.Height / 2;
double vortexStrength = 0.2;
double maxDistance = Math.Sqrt(centerX * centerX + centerY * centerY); // Distanza massima dal centro
for (int y = 0; y < originalImage.Height; y++)
{
for (int x = 0; x < originalImage.Width; x++)
{
// Calcola la distanza dal centro
double dx = x - centerX;
double dy = y - centerY;
double distance = Math.Sqrt(dx * dx + dy * dy);
// Normalizza la distanza per influenzare l'angolo in modo più uniforme
double normalizedDistance = distance / maxDistance;
//Calcola l'angolo, impostato dalla distanza normalizzata
double angle = Math.Atan2(dy, dx) + vortexStrength * (1 - normalizedDistance) * 5; // Regola il moltiplicatore
//Calcola le nuove coordinate
int newX = (int)(centerX + distance * Math.Cos(angle));
int newY = (int)(centerY + distance * Math.Sin(angle));
//Assicura che le nuove coordinate siano all'interno dei limiti
if (newX >= 0 && newX < originalImage.Width && newY >= 0 && newY < originalImage.Height)
{
vortexImage.SetPixel(x, y, originalImage.GetPixel(newX, newY));
}
}
}
vortexImage.Save(percorsoNomeNuovoFile);
MessageBox.Show("Immagine con effetto vortice creata con successo.");
}
catch (System.Exception ex)
{
MessageBox.Show("Errore: " + ex.Message);
}
}
In questo frammento di codice nel linguaggio di programmazione C#, vedremo come invertire in un'immagine esistente, la parte sinistra con la parte destra.
Utilizzeremo la versione del .Net Framework 9, in un progetto di tipo Windows Application, utilizzando le classi presenti nello spazio dei nomi "System.Drawing".
In visualizzazione codice, in alto sopra ad ogni dichiarazione, aggiungiamo lo spazio dei nomi per la gestione della grafica.
C#
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
Nell'evento click di un pulsante, aggiungiamo il seguente frammento di codice, che crea un nuova immagine, da una esistente, invertendo la parte sinistra in quella destra.
C#
private void BtnSinistraDestra_Click(object sender, EventArgs e)
{
try
{
string percorsoNomeFileOriginale = "C:\\varie\\uccelli.jpg";
string percorsoNomeNuovoFile = "C:\\varie\\uccelliSinistraDestra.jpg";
//Immagine originale
using (Bitmap bmpImmagineOriginale = new Bitmap(percorsoNomeFileOriginale))
{
//Nuova immagine per effetto destra e sinistra
Bitmap bmpNuovaImmagine = new Bitmap(bmpImmagineOriginale.Width, bmpImmagineOriginale.Height);
//Inverte l'immagine orizzontalmente
for (int x = 0; x < bmpImmagineOriginale.Width; x++)
{
for (int y = 0; y < bmpImmagineOriginale.Height; y++)
{
// Prendi il colore del pixel dall'immagine originale
Color pixelColor = bmpImmagineOriginale.GetPixel(x, y);
// Imposta il colore del pixel nella posizione speculare nell'immagine capovolta
// Per un capovolgimento orizzontale, l'asse X viene invertito
bmpNuovaImmagine.SetPixel(bmpImmagineOriginale.Width - 1 - x, y, pixelColor);
}
}
bmpNuovaImmagine.Save(percorsoNomeNuovoFile);
MessageBox.Show("Immagine con effetto invertita sinistra in destra creata con successo");
}
}
catch (System.Exception ex)
{
MessageBox.Show("Errore: " + ex.Message);
}
}
C#
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
C#
using MongoDB.Bson;
using
MongoDB.Bson.Serialization.Attributes;
namespace WebMongoDB.Models
{
public class Dati
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string? Id { get; set; }
[BsonElement("nome")]
public string Nome { get; set; } = null!;
[BsonElement("cognome")]
public string Cognome { get; set; } = null!;
[BsonElement("email")]
public string Email { get; set; } = null!;
[BsonElement("data_nascita")]
public DateTime
DataNascita { get; set; }
}
}
//Connection string per il database MongoDB
"MongoDBSettings": {
"ConnectionString": "mongodb://localhost:27017",
"DatabaseName": "Amministrazione",
"CollectionName": "Dati"
},
{
//Connection string for MongoDB
"MongoDBSettings": {
"ConnectionString": "mongodb://localhost:27017",
"DatabaseName": "Amministrazione",
"CollectionName": "Dati"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
C#
public class DatiSettings
{
public string
ConnectionString { get; set; } = null!;
public string DatabaseName
{ get; set; } = null!;
public string
CollectionName { get; set; } = null!;
}
using WebMongoDB.Models;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<DatiSettings>(
builder.Configuration.GetSection("MongoDBSettings"));
C#
using MongoDB.Driver;
using Microsoft.Extensions.Options;
C#
private readonly IMongoCollection<Dati>
_datiCollection;
C#
public DatiServizi(IOptions<DatiSettings> datiSettings)
{
var mongoClient = new MongoClient(datiSettings.Value.ConnectionString);
var mongoDatabase =
mongoClient.GetDatabase(datiSettings.Value.DatabaseName);
_datiCollection = mongoDatabase.GetCollection<Dati>(datiSettings.Value.CollectionName);
}
C#
//Metodo
per ottenere tutti i documenti dalla collezione
public async Task<List<Dati>> GetAsync() =>
await _datiCollection.Find(_ => true).ToListAsync();
//Metodo
per ottenere un documento specifico tramite l'Id
public async Task<Dati?> GetAsync(string id) =>
await _datiCollection.Find(x => x.Id ==
id).FirstOrDefaultAsync();
//Metodo
per creare un nuovo documento
public async Task CreateAsync(Dati newDati) =>
await _datiCollection.InsertOneAsync(newDati);
//Metodo
per aggiornare un documento esistente
public async Task UpdateAsync(string id, Dati updatedDati)
=>
await _datiCollection.ReplaceOneAsync(x => x.Id == id,
updatedDati);
//Metodo
per eliminare un documento tramite l'Id
public async Task RemoveAsync(string id) =>
await _datiCollection.DeleteOneAsync(x => x.Id == id);
C#
using
Microsoft.Extensions.Options;
using MongoDB.Driver;
using WebMongoDB.Models;
namespace WebMongoDB.Servizi
{
public class DatiServizi
{
private readonly IMongoCollection<Dati> _datiCollection;
//Nel costruttore inizializzo le impostazioni di
connessione a MongoDB
public DatiServizi(IOptions<DatiSettings> datiSettings)
{
var mongoClient = new MongoClient(datiSettings.Value.ConnectionString);
var mongoDatabase = mongoClient.GetDatabase(datiSettings.Value.DatabaseName);
_datiCollection =
mongoDatabase.GetCollection<Dati>(datiSettings.Value.CollectionName);
}
//Metodo per ottenere tutti i documenti dalla collezione
public async Task<List<Dati>> GetAsync() =>
await _datiCollection.Find(_ => true).ToListAsync();
//Metodo per ottenere un documento
specifico tramite l'Id
public async Task<Dati?> GetAsync(string id) =>
await _datiCollection.Find(x => x.Id ==
id).FirstOrDefaultAsync();
//Metodo per creare un nuovo
documento
public async Task CreateAsync(Dati newDati) =>
await _datiCollection.InsertOneAsync(newDati);
//Metodo per aggiornare un documento esistente
public async Task UpdateAsync(string id, Dati updatedDati) =>
await _datiCollection.ReplaceOneAsync(x => x.Id == id,
updatedDati);
//Metodo per eliminare un documento
tramite l'Id
public async Task RemoveAsync(string id) =>
await _datiCollection.DeleteOneAsync(x => x.Id == id);
}
}
builder.Services.AddSingleton<DatiServizi>();
C#
using
WebMongoDB.Models;
using WebMongoDB.Servizi;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<DatiSettings>(
builder.Configuration.GetSection("MongoDBSettings"));
builder.Services.AddSingleton<DatiServizi>();
C#
using Microsoft.AspNetCore.Mvc;
using WebMongoDB.Servizi;
namespace WebMongoDB.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class DatiControllers : ControllerBase
{
private readonly DatiServizi _datiServizi;
public DatiControllers(DatiServizi datiServizi ) {
_datiServizi = datiServizi;
}
}
}
C#
using Microsoft.AspNetCore.Mvc;
using WebMongoDB.Models;
using WebMongoDB.Servizi;
namespace WebMongoDB.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class DatiControllers : ControllerBase
{
private readonly DatiServizi _datiServizi;
public DatiControllers(DatiServizi datiServizi ) {
_datiServizi
= datiServizi;
}
[HttpGet]
public async Task<List<Dati>> Get() {
return await _datiServizi.GetAsync() ;
}
[HttpGet("{id:length(24)}")]
public async Task<ActionResult<Dati>> Get(string id) {
var dati = await
_datiServizi.GetAsync(id);
if (dati is null) {
return NotFound();
}
return dati ;
}
[HttpPost]
public async Task<IActionResult> Post(Dati newDati) {
await _datiServizi.CreateAsync(newDati);
return CreatedAtAction(nameof(Get), new { id = newDati.Id }, newDati);
}
[HttpPut("{id:length(24)}")]
public async Task<IActionResult> Update(string id, Dati updatedDati) {
var dati = await
_datiServizi.GetAsync(id);
if (dati is null) {
return NotFound();
}
updatedDati.Id = dati.Id;
await _datiServizi.UpdateAsync(id, updatedDati);
return NoContent();
}
[HttpDelete("{id:length(24)}")]
public async Task<IActionResult> Delete(string id) {
var dati = await
_datiServizi.GetAsync(id);
if (dati is null) {
return NotFound();
}
await _datiServizi.RemoveAsync(id);
return NoContent();
}
}
}
C#
using WebMongoDB.Models;
using WebMongoDB.Servizi;
var builder = WebApplication.CreateBuilder(args);
builder.Services.Configure<DatiSettings>(
builder.Configuration.GetSection("MongoDBSettings"));
builder.Services.AddSingleton<DatiServizi>();
// Add services to the container.
builder.Services.AddControllers().AddJsonOptions(
options =>
options.JsonSerializerOptions.PropertyNamingPolicy = null);
C#
[JsonPropertyName("nome")]
[BsonElement("nome")]
public string Nome { get; set; } = null!;
C#
using MongoDB.Bson;
using
MongoDB.Bson.Serialization.Attributes;
using
System.Text.Json.Serialization;
namespace WebMongoDB.Models
{
public class Dati
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string? Id { get; set; }
[JsonPropertyName("nome")]
[BsonElement("nome")]
public string Nome { get; set; } = null!;
[BsonElement("cognome")]
public string Cognome { get; set; } = null!;
[BsonElement("email")]
public string Email { get; set; } = null!;
[BsonElement("data_nascita")]
public DateTime
DataNascita { get; set; }
}
}